Skip to content

Commit 814a091

Browse files
committed
0.2
双栏多标签版本,功能基本可用。有图标报错。。不好解决。
1 parent 6af86a4 commit 814a091

2 files changed

Lines changed: 100 additions & 1 deletion

File tree

README.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,83 @@
11
# wx_explorer
22
基于wxpython的文件浏览器,为测试AI生成项目
33

4+
# 多标签文件浏览器 v0.2
5+
6+
## 新增功能
7+
8+
1. 双窗格浏览
9+
- 左右分屏显示,支持拖动调整窗格大小
10+
- 每个窗格独立支持多标签页
11+
- 可以在窗格间拖放文件
12+
13+
2. 主题支持
14+
- 新增浅色/深色主题切换
15+
- 支持跟随系统主题
16+
- 通过"视图->主题"菜单切换
17+
18+
3. 标签页管理增强
19+
- 支持恢复关闭的标签页(Ctrl+Shift+T)
20+
- 双击标签页可关闭
21+
- 标签栏双击空白处新建标签页
22+
23+
4. 文件操作增强
24+
- 支持系统右键菜单(Ctrl+右键)
25+
- 文件属性查看(Alt+Enter)
26+
- 文件重命名功能(F2)
27+
28+
5. 界面优化
29+
- 优化文件图标显示,使用系统原生图标
30+
- 状态栏显示选中文件/文件夹详细信息
31+
- 自动调整列表列宽
32+
33+
6. 文件监控改进
34+
- 实时监控目录变化并自动刷新
35+
- 状态栏显示文件变化信息
36+
- 支持多目录同时监控
37+
38+
## 快捷键
39+
40+
除原有快捷键外,新增:
41+
- F2: 重命名文件/文件夹
42+
- Alt+Enter: 查看文件属性
43+
- Ctrl+Shift+T: 恢复关闭的标签页
44+
- F5: 刷新当前目录
45+
- Alt+←: 后退
46+
- Alt+→: 前进
47+
- Alt+↑: 上级目录
48+
49+
## 右键菜单
50+
51+
基础右键菜单:
52+
- 打开
53+
- 剪切/复制/粘贴
54+
- 重命名
55+
- 删除
56+
- 刷新
57+
- 属性
58+
59+
系统右键菜单(Ctrl+右键):
60+
- 显示完整的Windows资源管理器右键菜单
61+
- 支持系统扩展命令
62+
63+
## 其他说明
64+
65+
1. 双窗格操作
66+
- 最小窗格宽度为200像素
67+
- 窗口大小改变时自动保持窗格比例
68+
- 每个窗格可独立导航和操作
69+
70+
2. 文件监控
71+
- 支持文件/文件夹的创建、删除、修改、移动事件
72+
- 自动更新文件列表和状态栏信息
73+
- 多标签页同时监控
74+
75+
3. 性能优化
76+
- 图标缓存机制
77+
- 智能列宽调整
78+
- 高效的文件系统事件处理
79+
80+
481
# 多标签文件浏览器 v0.1
582

683
一个基于 wxPython 的多标签文件浏览器,提供类似 Windows 资源管理器的功能。

wx_explorer.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
from watchdog.observers import Observer
1818
from watchdog.events import FileSystemEventHandler
1919

20+
# 版本信息
21+
VERSION = "0.2"
22+
APP_NAME = "多标签文件浏览器"
23+
2024
pythoncom.CoInitialize() # 添加在模块初始化处
2125
class FileChangeHandler(FileSystemEventHandler):
2226
def __init__(self, callback):
@@ -39,7 +43,7 @@ def on_moved(self, event):
3943

4044
class FileExplorerFrame(wx.Frame):
4145
def __init__(self):
42-
super().__init__(None, title="多标签文件浏览器", size=(1024, 768))
46+
super().__init__(None, title=f"{APP_NAME} v{VERSION}", size=(1024, 768))
4347

4448
# 初始化基本变量
4549
self.current_path = os.path.expanduser("~")
@@ -151,6 +155,20 @@ def get_selected_paths(self):
151155

152156
def on_tab_switch(self, event, side):
153157
"""切换标签页时更新监控路径"""
158+
notebook = self.left_notebook if side == "left" else self.right_notebook
159+
index = event.GetSelection()
160+
161+
# 如果切换到"+"标签页,则创建新标签页并选中它
162+
if notebook.GetPageText(index) == "+":
163+
# 获取当前活动标签页的路径
164+
current_tab = self.get_current_tab(side)
165+
path = current_tab['path'] if current_tab else os.path.expanduser("~")
166+
self.add_tab(path, side)
167+
# 确保"+"标签页保持不选中状态
168+
notebook.SetSelection(notebook.GetPageCount() - 2)
169+
event.Veto() # 阻止切换到"+"标签页
170+
return
171+
154172
current = self.get_current_tab(side)
155173
if current:
156174
self.start_watching(current['path'])
@@ -315,6 +333,8 @@ def add_tab(self, initial_path, side="left"):
315333
# 在"+"标签页之前插入新标签页
316334
self.tabs[side].append(tab_data)
317335
notebook.InsertPage(notebook.GetPageCount() - 1, panel, os.path.basename(initial_path) or initial_path, True)
336+
# 确保"+"标签页保持不选中状态
337+
notebook.SetSelection(notebook.GetPageCount() - 2)
318338

319339
# 刷新文件列表
320340
self.refresh_file_list(tab_data)
@@ -1328,6 +1348,8 @@ def on_notebook_dclick(self, event, side):
13281348
current_tab = self.get_current_tab(side)
13291349
path = current_tab['path'] if current_tab else os.path.expanduser("~")
13301350
self.add_tab(path, side)
1351+
# 确保"+"标签页保持不选中状态
1352+
notebook.SetSelection(notebook.GetPageCount() - 2)
13311353
elif tab_hit[0] < len(self.tabs[side]): # 不是"+"标签页
13321354
self.close_tab(tab_hit[0], side)
13331355
else:

0 commit comments

Comments
 (0)