2017-06-19 360 views
1

我有问题与QTDesigner 5,这应该是微不足道的,但我只是不能找出问题。在Python 3中使用QTDesigner 5打开第二个窗口

我想要做的就是打开第二个窗口上的一个按钮,当点击: 我设计的主窗口,并与QTDesigner二级一个(PyQT5!),并与pyuic以.py文件转换它们。主窗口没有用下面的代码问题打开:

from PyQt5 import QtGui, QtWidgets, QtCore, uic 
import UI14 as UIImport 
import GIPrompt as GIImport 

    class MainWindow(UIImport.Ui_MainWindow): 
      def __init__(self, window): 
       UIImport.Ui_MainWindow.__init__(self) 
       self.setupUi(window) 
       self.radioButtonGI.clicked.connect(self.openGIPrompt) 

      def openGIPrompt(self): 
       windowGI = QtWidgets.QDialog() 
       Gi = GIPrompt(windowGI) 
       windowGI.show() 


    class GIPrompt(GIImport.Ui_GIPrompt): 
      def __init__(self, windowGI): 
       GIImport.Ui_GIPrompt.__init__(self) 
       self.setupUi(windowGI) 

if __name__ == '__main__': 


app = QtWidgets.QApplication(sys.argv) 
window = QtWidgets.QMainWindow() 
prog = MainWindow(window) 

window.show() 
sys.exit(app.exec_()) 

如果我添加以下主要功能,“GiPrompt”窗口打开,以及与主窗口一起:

if __name__ == '__main__': 

app = QtWidgets.QApplication(sys.argv) 
window = QtWidgets.QMainWindow() 
prog = MainWindow(window) 

window.show() 

"""Open secondWindow""" 
windowGI = QtWidgets.QDialog() 
Gi = GIPrompt(windowGI) 
windowGI.show() 

sys.exit(app.exec_()) 

如果我尝试通过openGIPrompt函数打开第二个窗口,没有任何反应。我没有收到错误消息,也没有出现窗口。然而,打印命令告诉我,第二个窗口的init_function被称为...

有人有一个想法,问题可能是什么?

在此先感谢!

回答

0

我想通了这个问题: 显然,初始化的窗口是由垃圾收集处置,为变量没有自我宣告:

这解决了这一问题:

from PyQt5 import QtGui, QtWidgets, QtCore, uic 
import UI14 as UIImport 
import GIPrompt as GIImport 

    class MainWindow(UIImport.Ui_MainWindow): 
      windowGI=None 
      Gi=None 
      def __init__(self, window): 
       UIImport.Ui_MainWindow.__init__(self) 
       self.setupUi(window) 
       self.radioButtonGI.clicked.connect(self.openGIPrompt) 

      def openGIPrompt(self): 
       self.windowGI = QtWidgets.QDialog() 
       self.Gi = GIPrompt(self.windowGI) 
       self.windowGI.show() 


    class GIPrompt(GIImport.Ui_GIPrompt): 
      def __init__(self, windowGI): 
       GIImport.Ui_GIPrompt.__init__(self) 
       self.setupUi(windowGI) 

if __name__ == '__main__': 


app = QtWidgets.QApplication(sys.argv) 
window = QtWidgets.QMainWindow() 
prog = MainWindow(window) 

window.show() 
sys.exit(app.exec_()) 
相关问题