1. 预置条件
以下内容全部基于Python 3.5.3 + PyQt5.8.2
2. 入门1:
创建自定义Widget: MyWidget
2.1. Step 1: 最简易的show
Code:
import sys
from PyQt5.Qt import QWidget, QApplication
class MyWidget(QWidget):
'''
do nothing here
'''
pass
def main():
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
return sys.exit(app.exec_())
if __name__ == '__main__':
main()
Output:
2.2. Step 2: 增加1个PushButton控件
Code:
import sys
from PyQt5.Qt import QWidget, QApplication
from PyQt5.QtWidgets import QPushButton
class MyWidget(QWidget):
'''
MyWidget
'''
def __init__(self):
'''
@ __init__ function, supper().__init()__ must be called
'''
super().__init__()
self.pushButton = QPushButton('PushButton', self)
def main():
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
return sys.exit(app.exec_())
if __name__ == '__main__':
main()
Output:
2.3. Step 3: 为控件添加事件响应
Code:
import sys
from PyQt5.Qt import QWidget, QApplication
from PyQt5.QtWidgets import (QPushButton, QMessageBox)
class MyWidget(QWidget):
'''
do nothing here
'''
def __init__(self):
'''
in __init__ function, supper().__init()__ must be called
'''
super().__init__()
self.pushButton = QPushButton('PushButton', self)
self.pushButton.clicked.connect(self.pushButtonClicked)
def pushButtonClicked(self):
QMessageBox.information(None, 'This is Title', 'This is Information')
def main():
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
return sys.exit(app.exec_())
if __name__ == '__main__':
main()
Output:
2.4. Step 4: 为控件增加布局
Code:
import sys
from PyQt5.Qt import QWidget, QApplication
from PyQt5.QtWidgets import (QPushButton, QMessageBox, QGridLayout)
class MyWidget(QWidget):
'''
do nothing here
'''
def __init__(self):
'''
in __init__ function, supper().__init()__ must be called
'''
super().__init__()
self.pushButton = QPushButton('PushButton', self)
self.pushButton.clicked.connect(self.pushButtonClicked)
layout = QGridLayout()
self.setLayout(layout)
layout.addWidget(self.pushButton)
def pushButtonClicked(self):
print('pushButtonClicked')
QMessageBox.information(None, 'This is Title', 'This is Information')
def main():
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
return sys.exit(app.exec_())
if __name__ == '__main__':
main()
Output: