3

私は PySide を使用しており、Qt アプリを再起動する方法を探しています。これはpythonに依存していますか、それともQtで制御する必要がありますか?

ROSTYSLAVの提案ベローによる:

class MyAppMainWindow(QMainWindow):
    def __init__(self):

        self.EXIT_CODE_REBOOT = -15123123
        exit_code = self.EXIT_CODE_REBOOT

    def slotReboot(self):

        print "Performing application reboot.."
        qApp.exit( self.EXIT_CODE_REBOOT )

def main():
    currentExitCode = 0
    app = QApplication(sys.argv)
    ex = MyAppMainWindow()

    while currentExitCode == ex.EXIT_CODE_REBOOT :
        currentExitCode = app.exec_()

        return currentExitCode

if __name__ == '__main__':
    main()

明らかに、私は完全には理解していませんでした。助けてください。

4

2 に答える 2

3

トピックはかなり古いですが、適切な解決策が提供されていないようです。だからここにあります(Rostyslav Dzinkoが提案したことに基づいて):

EXIT_CODE_REBOOT = -11231351

from PySide import QtGui, QtCore
import sys

class MyApp(QtGui.QMainWindow):

    def __init__(self, parent=None):       
        super(MyApp, self).__init__(parent)
    def restart (self):            
        #DO stuff before restarting here            
        return QtCore.QCoreApplication.exit( EXIT_CODE_REBOOT )            

def start_app():

    exit_code = 0
    while True:
        try:
            app = QtGui.QApplication(sys.argv)
        except RuntimeError:
            app = QtCore.QCoreApplication.instance()            
        myap = MyApp()
        myap.show()            
        exit_code = app.exec_()            
        if exit_code != EXIT_CODE_REBOOT:
            break        
    return exit_code


if __name__ == '__main__':
    start_app()
于 2015-01-16T14:58:57.373 に答える