2017-06-19 29 views
1

私はQTDesigner 5に問題があります。これは簡単なことですが、問題を理解できません。Python 3で2番目のウィンドウを開くQTDesigner 5

私がしたいことは、ボタンをクリックすると2番目のウィンドウを開くことです: 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_()) 

私はmain関数に以下を追加する場合は、「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関数で2番目のウィンドウを開こうとすると、何も起こりません。エラーメッセージが表示されず、ウィンドウが表示されません。しかし、printコマンドは、2番目のウィンドウの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_()) 
:この問題を修正

関連する問題