python-script-library/脚本管理器.py

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_()