2016-04-21 93 views
4

首先,类似的问题已经回答过,但我需要一些帮助。PyQT:如何打开新窗口

我有一个包含一个按钮(头等舱)一个窗口,我想上压,第二个空白窗口将出现(第二类)

我拨弄着来自这个问题复制代码:PyQT on click open new window,我写了这个代码:

# -*- coding: utf-8 -*- 

from PyQt4 import QtGui, QtCore 
import sys 
import design1, design2 

class Second(QtGui.QMainWindow, design2.Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(Second, self).__init__(parent) 
     self.setupUi(self) 

class First(QtGui.QMainWindow, design1.Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(First, self).__init__(parent) 
     self.setupUi(self) 

     self.pushButton.clicked.connect(self.on_pushButton_clicked) 
     self.dialog = Second(self) 

    def on_pushButton_clicked(self): 
     self.dialog.exec_() 

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

if __name__ == '__main__': 
    main() 

但on_pressed,出现此错误消息:

​​

(设计1和设计2有来自Qt设计师。)

任何想法将不胜感激。

+0

虽然'QDialog'有一个'exec_'方法,你子类'QMainWindow'不具备这种方法。您可能需要阅读tge类之间的差异,并决定要使用的内容。 –

回答

8

我认为你应该使用show方法。

这里北京时间工作示例(从你的推导):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from PyQt4 import QtGui, QtCore 
import sys 


class Second(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(Second, self).__init__(parent) 


class First(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(First, self).__init__(parent) 
     self.pushButton = QtGui.QPushButton("click me") 

     self.setCentralWidget(self.pushButton) 

     self.pushButton.clicked.connect(self.on_pushButton_clicked) 
     self.dialog = Second(self) 

    def on_pushButton_clicked(self): 
     self.dialog.show() 


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

if __name__ == '__main__': 
    main() 
+0

它工作正常。谢谢。 – user3060854