2013-05-21 57 views
0

我在QT4上創建了2個窗口。 在空閒時,我設法顯示窗口1並添加一個關閉動作,一旦按鈕被點擊。 我想通過點擊這個按鈕來調用並顯示窗口2。我的代碼是:調用pyqt窗口

import os 

import shlex 

import sys, Tkinter 

#import Converted Python UI File 

from W0 import Ui_MainWindow1 

如果我有from W import Ui_MainWindow2調用我的第二個窗口,直接顯示了我和窗口2窗口跳1!

class Main(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

     # Button close the window1(would like to show window 2 instead now) . 
     self.ui.pushButton.clicked.connect(self.close) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    window = Main() 
    window.show() 
    sys.exit(app.exec_()) 

main() 
+0

首先,你爲什麼要導入'Tkinter'成'Qt'程序?其次,請修復縮進;當代碼不可運行或不可讀時,很難猜測出您做錯了什麼。 – abarnert

+0

此外,您還沒有向我們展示足夠的代碼。你的'Main .__ init__'實例化一些類'Ui_MainWindow',但是沒有創建這樣的類的代碼。你正在做'從W0導入Ui_MainWindow1',但你可能會認爲是一個小錯字,解釋器會考慮一個完全不同的事情,並給你一個'NameError'。 – abarnert

+0

最後,你的實際代碼的問題很可能是(a)你想把'W0.Ui_MainWindow1'和'W1.Ui_MainWindow2'放到同一個變量中,或者(b)你有一些在運行自己的事件循環的'W0'或'W1'中設置代碼,所以主腳本中的代碼甚至不會運行。在沒有看到你的實際運行代碼的情況下,包括'W0.py'和'W1.py',或者更好的是,它的一個精簡的版本足以證明問題 - 這將很難做到超過猜測。 – abarnert

回答

0

試試這個

from W0 import Ui_MainWindow1 
from W import Ui_MainWindow2 

class Main1(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.ui = Ui_MainWindow1() 
     self.ui.setupUi(self) 
     self.ui.pushButton.clicked.connect(self.close) 

class Main2(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.ui = Ui_MainWindow2() 
     self.ui.setupUi(self) 
     self.ui.pushButton.clicked.connect(self.close) 

def main(): 
    app = QtGui.QApplication(sys.argv) 

    window1 = Main1() 
    window1.show() 

    window2 = Main2() 
    window2.show() 

    sys.exit(app.exec_()) 

main()