61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
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_() |