首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重启PyQt4应用程序

如何重启PyQt4应用程序
EN

Stack Overflow用户
提问于 2013-03-05 18:23:34
回答 4查看 5K关注 0票数 1

是否有重新启动PyQt应用程序QApplication的方法

我有一个用pyqt4和Python2.6创建的应用程序,使用以下代码

app = QtGui.QApplication(sys.argv)

我有设置选项,我可以在其中设置一些设置。现在,当我保存设置时,我需要重新加载应用程序,以便新设置生效。而无需最终用户退出并重新启动应用程序。

EN

回答 4

Stack Overflow用户

发布于 2013-09-04 05:52:32

我遇到了类似的问题,并在适当的地方简单地使用了以下代码:

代码语言:javascript
复制
subprocess.Popen([__file__])
sys.exit(0)

这是一个简单的应用程序,不需要任何进一步的参数。

票数 3
EN

Stack Overflow用户

发布于 2013-03-29 17:09:56

我解释一下我是如何做到的:

我创建了一个调用我实际的主程序文件dash.py的额外的文件main.py。我发出一个重新启动的信号(我的程序在closeEvent处自动更新),所以我需要发出一个信号。这是希望对你有帮助的片断。

这是在我的dash.py主程序文件中

代码语言:javascript
复制
def restart(self):
    # create a signal equivalent to "void someSignal(int, QWidget)"
    self.emit(QtCore.SIGNAL("RESTARTREQUIRED"), True)

这是main.py中的一个,它只调用实际的程序并重新启动应用程序

代码语言:javascript
复制
import sys
from PyQt4 import QtGui,QtCore
from bin import dash

if __name__ == "__main__":
    application = QtGui.QApplication(sys.argv)
    uDesk = dash.app()
    uDesk.show()
    uDesk.actionRestart.triggered.disconnect()
    # define restart slot
    @QtCore.pyqtSlot()
    def restartSlot():
        print 'Restarting app'
        global uDesk
        uDesk.deleteLater()
        uDesk = dash.app()
        uDesk.show()
        uDesk.actionRestart.triggered.disconnect()   
        uDesk.actionRestart.triggered.connect(restartSlot)
        print 'New app started !'

    QtCore.QObject.connect(uDesk,
                   QtCore.SIGNAL("RESTARTREQUIRED"),
                   restartSlot)
    uDesk.actionRestart.triggered.connect(restartSlot)
    sys.exit(application.exec_()) 

希望这能对你有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2013-03-05 18:52:59

编辑:更改获取应用程序路径的方式

您可以启动一个新进程,然后退出您的进程,如下所示:(代码未经过测试,但基于this answer)

代码语言:javascript
复制
// Restart Application
def restart(self, abort):
    // Spawn a new instance of myApplication:
    proc = QProcess()
    //proc.start(self.applicationFilePath());
    import os
    proc.start(os.path.abspath(__file__))

    self.exit(0);

将其编码为您的Qapplication的一个方法,甚至是一个函数,如果您不喜欢子类化的话

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15221361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档