如何在Python中打开QMainWindow应用的一个或多个新实例
实现点击"New"菜单打开PyQt应用新实例
你已经完成了带有"New"和"Quit"菜单项的QMainWindow搭建,且"Quit"功能正常。要实现点击"New"打开应用新实例,可通过启动独立进程的方式实现(避免同一进程内多实例的资源共享问题),修改代码如下:
import sys import subprocess from PyQt5.QtWidgets import QMainWindow, QApplication # 请根据你的实际文件路径调整Ui_MainWindow的导入 from your_ui_module import Ui_MainWindow class MainApp(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.show() self.action_Quit.triggered.connect(self.exit_app) # 绑定New菜单的触发信号到对应方法 self.action_New.triggered.connect(self.open_new_instance) def exit_app(self): self.close() def open_new_instance(self): # 启动当前脚本的新进程,创建完全独立的应用实例 subprocess.run([sys.executable, sys.argv[0]]) if __name__ == "__main__": app = QApplication(sys.argv) MainWindow = MainApp() sys.exit(app.exec())
关键说明:
- 导入
subprocess模块用于启动独立进程 - 为
action_New菜单项绑定open_new_instance方法 - 在
open_new_instance方法中,通过sys.executable获取当前Python解释器路径,sys.argv[0]获取当前脚本路径,用subprocess.run启动新进程,确保每个实例完全独立
内容的提问来源于stack exchange,提问作者gabrsafwat
相关产品推荐
相关产品推荐

