Python 空QMainWindow,PyQt

Python 空QMainWindow,PyQt,python,pyqt,pyqt4,qmainwindow,Python,Pyqt,Pyqt4,Qmainwindow,我有两个QMainWindows,我正试图从另一个窗口调用其中一个。窗口将打开,但它是空的,在父窗口关闭之前不会响应 我的代码: from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_MainWindow(QtGui.QMainWindow): def __init_

我有两个QMainWindows,我正试图从另一个窗口调用其中一个。窗口将打开,但它是空的,在父窗口关闭之前不会响应

我的代码:

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self,None)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(184, 165)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(40, 40, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 184, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QObject.connect(self.pushButton , QtCore.SIGNAL("clicked()"),self.gone)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))

    def gone(self):
        mainwindow = QtGui.QMainWindow()
        self.mw2 = Ui_MainWindow1()
        self.mw2.setupUi(mainwindow)
        self.mw2.show()

class Ui_MainWindow1(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self,None)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(170, 175)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.label = QtGui.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 60, 101, 16))
        self.label.setObjectName(_fromUtf8("label"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 170, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("MainWindow", "This is second", None, QtGui.QApplication.UnicodeUTF8))

def startmain():
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow() # <-- Instantiate QMainWindow object.
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    app.exec_()

if __name__ == "__main__":
    import sys
    startmain()
从PyQt4导入QtCore,QtGui
尝试:
_fromUtf8=QtCore.QString.fromUtf8
除属性错误外:
_fromUtf8=λs:s
类Ui_主窗口(QtGui.QMainWindow):
定义初始化(自):
QtGui.QMainWindow.\uuuuu init\uuuuuu(self,无)
def设置UI(自我,主窗口):
MainWindow.setObjectName(_fromUtf8(“MainWindow”))
主窗口。调整大小(184165)
self.centralwidget=QtGui.QWidget(主窗口)
self.centralwidget.setObjectName(\u fromUtf8(“centralwidget”))
self.pushButton=QtGui.QPushButton(self.centralwidget)
自身按钮设置几何(QtCore.QRect(40,40,75,23))
self.butdown.setObjectName(_fromUtf8(“butdown”))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar=QtGui.QMenuBar(主窗口)
self.menubar.setGeometry(QtCore.QRect(0,018421))
self.menubar.setObjectName(_fromUtf8(“menubar”))
MainWindow.setMenuBar(self.menubar)
self.statusbar=QtGui.QStatusBar(主窗口)
self.statusbar.setObjectName(_fromUtf8(“statusbar”))
main window.setStatusBar(self.statusbar)
自重传(主窗口)
QtCore.QObject.connect(self.butdown,QtCore.SIGNAL(“clicked()”),self.gone)
QtCore.QMetaObject.connectSlotsByName(主窗口)
def重新传输(自身,主窗口):
setWindowTitle(QtGui.QApplication.translate(“主窗口”、“主窗口”、无、QtGui.QApplication.unicodeut8))
self.putton.setText(QtGui.QApplication.translate(“主窗口”,“按钮”,无,QtGui.QApplication.unicodeut8))
def gone(self):
mainwindow=QtGui.QMainWindow()
self.mw2=Ui_MainWindow1()
self.mw2.setupUi(主窗口)
self.mw2.show()
类Ui_MainWindow1(QtGui.QMainWindow):
定义初始化(自):
QtGui.QMainWindow.\uuuuu init\uuuuuu(self,无)
def设置UI(自我,主窗口):
MainWindow.setObjectName(_fromUtf8(“MainWindow”))
主窗口。调整大小(170175)
self.centralwidget=QtGui.QWidget(主窗口)
self.centralwidget.setObjectName(\u fromUtf8(“centralwidget”))
self.label=QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(40,60,101,16))
self.label.setObjectName(_fromUtf8(“label”))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar=QtGui.QMenuBar(主窗口)
self.menubar.setGeometry(QtCore.QRect(0,0,170,21))
self.menubar.setObjectName(_fromUtf8(“menubar”))
MainWindow.setMenuBar(self.menubar)
self.statusbar=QtGui.QStatusBar(主窗口)
self.statusbar.setObjectName(_fromUtf8(“statusbar”))
main window.setStatusBar(self.statusbar)
自重传(主窗口)
QtCore.QMetaObject.connectSlotsByName(主窗口)
def重新传输(自身,主窗口):
setWindowTitle(QtGui.QApplication.translate(“主窗口”、“主窗口”、无、QtGui.QApplication.unicodeut8))
self.label.setText(QtGui.QApplication.translate(“主窗口”,“这是第二个”,无,QtGui.QApplication.UnicodeUTF8))
def startmain():
app=QtGui.QApplication(sys.argv)

MainWindow=QtGui.QMainWindow()#我不明白当您的
Ui\u MainWindow
Ui\u MainWindow1
类是
QMainWindow
的子类时,为什么要创建
QMainWindow
对象。基本上,你有四个主窗口,而你只需要两个

不要创建名为
MainWindow
QMainWindow
并在其中设置内容,而是使用
self
而不是
MainWindow
来设置每个窗口本身。以下内容似乎适用于我,因为第一个窗口有一个按钮,单击它将打开第二个窗口,其中有一个标签:

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self,None)

    def setupUi(self):
        self.setObjectName(_fromUtf8("self"))
        self.resize(184, 165)
        self.centralwidget = QtGui.QWidget(self)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(40, 40, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 184, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(self)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        self.setStatusBar(self.statusbar)

        self.retranslateUi()
        QtCore.QObject.connect(self.pushButton , QtCore.SIGNAL("clicked()"),self.gone)
        QtCore.QMetaObject.connectSlotsByName(self)

    def retranslateUi(self):
        self.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))

    def gone(self):
        self.mw2 = Ui_MainWindow1()
        self.mw2.setupUi()
        self.mw2.show()

class Ui_MainWindow1(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self,None)

    def setupUi(self):
        self.setObjectName(_fromUtf8("self"))
        self.resize(170, 175)
        self.centralwidget = QtGui.QWidget(self)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.label = QtGui.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 60, 101, 16))
        self.label.setObjectName(_fromUtf8("label"))
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 170, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(self)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        self.setStatusBar(self.statusbar)

        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)

    def retranslateUi(self):
        self.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("MainWindow", "This is second", None, QtGui.QApplication.UnicodeUTF8))

def startmain():
    app = QtGui.QApplication(sys.argv)
    ui = Ui_MainWindow()
    ui.setupUi()
    ui.show()
    app.exec_()

if __name__ == "__main__":
    import sys
    startmain()

Thanx Luke,我只想知道子窗口在父窗口后面,在父窗口关闭之前是不活动的