import sys
from PyQt5.QtGui import QIcon
from file_web import Ui_Form # 导入生成的UI类
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem # 导入所需的Qt组件
from PyQt5.QtCore import QDir, QProcess # 导入目录和进程相关的类
class fileWidge(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self) # 设置UI界面
self.lineEdit.setText('./') # 设置初始路径为当前目录
self.dir = QDir() # 创建QDir对象以处理目录
self.show_dir() # 显示当前目录的内容
self.slot_init() # 初始化信号和槽连接
def slot_init(self):
# 连接按钮和列表项的信号到相应的槽函数
self.back_btn.clicked.connect(self.back_slot) # 返回上级目录按钮
self.listWidget.itemDoubleClicked.connect(self.btn_btn) # 双击列表项打开
def back_slot(self):
# 返回上层目录的槽函数
result = self.dir.cdUp() # 尝试进入上层目录
if result: # 如果成功
path = self.dir.absolutePath() # 获取当前目录的绝对路径
print(path) # 打印路径
self.lineEdit.setText(path) # 更新文本框中的路径
self.show_dir() # 更新目录展示
def btn_btn(self, item):
# 双击列表项的槽函数
result = self.dir.cd(item.text()) # 进入选中的目录
print(result) # 打印进入结果
if result: # 如果成功进入目录
path = self.dir.absolutePath() # 获取当前目录的绝对路径
self.lineEdit.setText(path) # 更新路径文本框
self.show_dir() # 更新目录展示
else: # 如果不是目录,尝试打开文件
filepath = self.dir.absolutePath() + '/' + item.text() # 构造文件路径
# print(filepath)
self.progess = QProcess(self) # 创建QProcess对象用于启动子进程
argv = [] # 存储进程的参数
argv.append("notepad.py") # 添加要执行的脚本
argv.append(filepath) # 添加文件路径作为参数
self.progess.start('python', argv) # 启动python进程
def show_dir(self):
# 显示当前目录内容的函数
self.listWidget.clear() # 清空列表
self.dir.setPath(self.lineEdit.text()) # 设置QDir对象的路径为文本框中的路径
Dir_filter = QDir.AllEntries | QDir.NoDotAndDotDot # 过滤条件:所有条目,不包括.和..
sort_filter = QDir.DirsFirst # 排序条件:文件夹优先
self.list_list = self.dir.entryInfoList(Dir_filter, sort_filter) # 获取目录列表
for i in self.list_list: # 遍历目录列表
item = QListWidgetItem() # 创建新的列表项
# 根据条目类型设置图标
if i.isDir():
item.setIcon(QIcon('../菜单/images/icon/dir.png')) # 设置目录图标
elif i.isFile():
item.setIcon(QIcon('../菜单/images/icon/file.png')) # 设置文件图标
item.setText(i.fileName()) # 设置列表项的文本为文件或目录名
self.listWidget.addItem(item) # 将项添加到列表中
if __name__ == '__main__':
app = QApplication(sys.argv) # 创建应用程序实例
windows = fileWidge() # 创建主窗口实例
windows.show() # 显示主窗口
sys.exit(app.exec_()) # 运行应用程序并在退出时关闭
|