那看起来很乱。这是一种更常见的方式来编写这样的内容:
from PyQt4 import QtGui
from PyQt4.uic.properties import QtCore
class MainWindow1(QtGui.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow1, self).__init__(*args, **kwargs)
self.pushButton = QtGui.QPushButton('pushButton')
self.pushButton.released.connect(self.callSecondWindow)
self.mainWindow2 = MainWindow2()
self.setCentralWidget(self.pushButton)
def callSecondWindow(self):
self.mainWindow2.show()
class MainWindow2(QtGui.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow2, self).__init__(*args, **kwargs)
self.resize(336, 227)
self.setObjectName('centralwidget')
self.label = QtGui.QLabel()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow1()
mainWindow.show()
sys.exit(app.exec_())
几点注意事项
-
不需要
setupUi
python已经具有的函数
__init__
为此
-
Signal语法:
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"),self.callSecondWindow)
-
已替换为更可读的:
self.pushButton.released.connect(self.callSecondWindow)
-
通常没有理由持有
QMainWindow
在一个额外的对象中,直接将其子类化
-
大多数人对变量使用小写名称,对类使用大写名称,这只是一种惯例,但它使代码对其他人更可读