import os import subprocess from PyQt5.QtWidgets import (QApplication, QMainWindow, QListWidget, QVBoxLayout, QLineEdit, QMessageBox, QWidget) from PyQt5.QtCore import Qt class ScriptRunner(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Python脚本启动器") self.setGeometry(100, 100, 600, 400) self.script_dir = r"D:\test\集合" self.init_ui() self.load_scripts() def init_ui(self): central = QWidget() layout = QVBoxLayout(central) self.search_box = QLineEdit() self.search_box.setPlaceholderText("搜索脚本...") self.search_box.textChanged.connect(self.filter_scripts) layout.addWidget(self.search_box) self.script_list = QListWidget() self.script_list.itemDoubleClicked.connect(self.run_script) layout.addWidget(self.script_list) self.setCentralWidget(central) def load_scripts(self): self.script_list.clear() if os.path.exists(self.script_dir): for f in os.listdir(self.script_dir): if f.endswith('.py'): self.script_list.addItem(f) else: QMessageBox.warning(self, "错误", f"目录不存在: {self.script_dir}") def filter_scripts(self): keyword = self.search_box.text().lower() for i in range(self.script_list.count()): item = self.script_list.item(i) item.setHidden(keyword not in item.text().lower()) def run_script(self, item): script_name = item.text() script_path = os.path.join(self.script_dir, script_name) try: # 使用subprocess在新窗口中运行 subprocess.Popen(f'start cmd /k python "{script_path}"', shell=True) self.statusBar().showMessage(f"正在运行: {script_name}") except Exception as e: QMessageBox.critical(self, "错误", f"运行失败: {str(e)}") if __name__ == "__main__": app = QApplication([]) window = ScriptRunner() window.show() app.exec_()