2017-06-19 366 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_()) 
相關問題