2012-09-09 51 views
0
import sys 
from PyQt4 import QtCore, QtGui 
from test_ui import Ui_MainWindow 

class StartQt4(QtGui.QMainWindow): 
    def __init__(self,parent=None): 
     QtGui.QWidget.__init__(self) 
     self.ui=Ui_MainWindow() 
     self.ui2=Ui_MainWindow() 
     self.ui2.setupUi(self)  # ui2 setup 
     self.ui.setupUi(self)  # ui setup .interchanging these 2 lines gives 2 guis 


     QtCore.QObject.connect(self.ui.button_open,QtCore.SIGNAL("clicked()"),self.file_open) 

    def file_open(self): 
     self.ui.editor_window.setText('Yes u are doing good') 

if __name__ == "__main__": 
    app=QtGui.QApplication(sys.argv) 
    myapp=StartQt4() 
    myapp.show() 
    sys.exit(app.exec_()) 

开2个GUI窗口试图创建简单PyQt4的gui.My目标在时间打开两个GUI窗口,并因此创建的2个对象uiui2。通过交换该被注释的线,它工作得很好,2个窗口被打开。但是当我离开它时,只有ui对象窗口被打开。如何可能。他们只是在显示之前在不同时间调用的方法(myapp.show())是正确的?刚开始学习pyqt4。PyQt4中:无法在时间

+0

这些方法('.setupUi()')正在传递'self'参数,这意味着它们可能正在修改您的'StartQT4'类实例。您需要在不同的类中创建多个窗口并单独显示它们。 – Blender

回答

2

生成的类Ui_MainWindow不表示窗口本身,只表示它包含的窗口小部件。该窗口是您传递给setupUi()self参数。

要有2个窗口,您需要创建2个StartQt4对象,每个对象只有1个Ui_MainWindow,并且每个对象都调用show()

+0

我把问题弄得一团糟。不知怎的,我忘了关闭以前打开的窗口,并认为如果我交换了这两个注释行,就会打开2个窗口。而thnx的真棒回答。现在这一切都有道理。 – tez