1、PyQT中__init__(self,parent==None)的parent含义
QWidget对象就可以有一个parent。这种parent-child关系主要用于两个方面:
(1).没有parent的QWidget类被认为是最上层的窗体(通常是MainWindow),由于MainWindow的一些操作生成的新窗体对象,parent都应该指向MainWindow。
(2).由于parent-child关系的存在,它保证了child窗体在主窗体被回收之时也被回收。
parent作为构造函数的最后一个参数被传入,但通常情况下不必显示去指定parent对象。因为当调用局管理器时,部局管理器会自动处理这种parent-child关系。但是在一些特殊的情况下,我们必须显示的指定parent-child关系。如当生成的子类不是QWidget对象但继承了QObject对象,用作dock widgets的QWidget对象。
2、代码如下
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
button = QPushButton("按钮", self)
button.move(100, 100)
button.clicked.connect(self.buttonClicked)
self.setGeometry(100, 100, 320, 240)
self.setWindowTitle("信号与槽")
def buttonClicked(self):
QMessageBox.information(self, "提示信息", "信号和槽测试:点击了按钮")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec())
3、实现效果