2016-07-06 90 views
0

以下代码应关闭当前文件并再次打开它。相反,它只能打开新窗口。如何重新打开窗口

有没有人提示保持旧窗口关闭?

import sys 
from PyQt4 import QtGui, QtCore 
import subprocess 

class Example(QtGui.QWidget): 
    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def run(self, path): 
     subprocess.call(['python',path]) 

    def initUI(self): 
     self.close() 
     self.btn_newSearch = QtGui.QPushButton('Start', self) 
     self.btn_newSearch.clicked.connect(lambda:self.run('tests.py')) 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Python Script') 
     self.show() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

回答

1

您似乎已将self.close()放在错误的地方。此外,你不应该使用subprocess.call,因为它会阻塞,直到命令完成。这是更好地使用QProcess代替:

def run(self, path): 
     QtCore.QProcess.startDetached('python', [path]) 
     self.close() 

    def initUI(self): 
     self.btn_newSearch = QtGui.QPushButton('Start', self) 
     ... 
+0

非常感谢您的努力和你解释的答案.... – rainer