当前位置:  开发笔记 > 编程语言 > 正文

如何重新启动pyqt应用程序?

如何解决《如何重新启动pyqt应用程序?》经验,为你挑选了1个好方法。



1> ochurlaud..:

假设你在MainWindow.定义在__init__

MainWindow.EXIT_CODE_REBOOT = -12345678  # or whatever number not already taken

您的广告位restart()应包含:

qApp.exit( MainWindow.EXIT_CODE_REBOOT )

和你的main:

currentExitCode = MainWindow.EXIT_CODE_REBOOT

while currentExitCode == MainWindow.EXIT_CODE_REBOOT:
    a = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    currentExitCode = a.exec_()

return currentExitCode

[1] https://wiki.qt.io/How_to_make_an_Application_restartable


编辑:最小的工作示例

我只是重新实现了这个keyPressedEvent方法而不是信号/插槽.

import sys
from PyQt4 import QtGui
from PyQt4.QtCore import Qt

class MainWindow(QtGui.QMainWindow):
    EXIT_CODE_REBOOT = -123
    def __init__(self,parent=None):
        QtGui.QMainWindow.__init__(self, parent)

    def keyPressEvent(self,e):
        if (e.key() == Qt.Key_R):
            QtGui.qApp.exit( MainWindow.EXIT_CODE_REBOOT )


if __name__=="__main__":
    currentExitCode = MainWindow.EXIT_CODE_REBOOT
    while currentExitCode == MainWindow.EXIT_CODE_REBOOT:
        a = QtGui.QApplication(sys.argv)
        w = MainWindow()
        w.show()
        currentExitCode = a.exec_()
        a = None  # delete the QApplication object


请务必注意,此方法不会重新启动Python或重新加载任何库/模块。如果要完全重新开始,则需要使用一种在新过程中启动应用程序的方法。
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有