# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("PyQt5的第一个程序")
window.resize(300, 70)
label = QtWidgets.QLabel("Hollo World!")
btnQuit = QtWidgets.QPushButton("关闭窗口")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btnQuit)
window.setLayout(vbox)
btnQuit.clicked.connect(app.quit)
window.show()
sys.exit(app.exec_())
1.PyQt的程序结构
第1行:# -*- coding: utf-8 -*- 指定程序文件的编码格式
第2行:载入PyQt5的QtWidgets模块。它包括实现GUI图形界面所需的window,button等。
第3行:载入Python的sys模块。
第4行:app = QtWidgets.QApplication(sys.argv)
创建每一个PyQt5程序都需要的application对象,可以在程序的任何地方通过QtWidgets的qApp属性来访问。例如,可用来打印命令行参数:print(QtWidgets.qApp.arguments()),sys.argv参数是一个命令行参数列表。
第5行:window = QtWidgets.QWidget()
使用没有参数的默认构造函数创建一个窗口对象。QtWidget部件是PyQt5中所有用户界面类的父类。
第6行:window.setWindowTitle("PyQt5的第一个程序")
设置窗口部件的标题,该标题将在标题栏中显示。
第7行:window.resize (300, 70)
设置窗口的client区域大小为300像素宽,70像素高。
第8行:label = QtWidgets.QLabel("HolloWorld!")
创建一个QLable对象,居中显示“Hollo
World!”。本句中使用以html格式文字为参数的构造函数。
第9行:btnQuit =QtWidgets.QPushButton("关闭窗口")
创建一个QPushButton对象, 显示的文字为“关闭窗口”。
第10行:vbox =QtWidgets.QVBoxLayout()
创建一个.QVBoxLayout 竖向容器对象。所有加到里面的对象将按从上到下顺序排列,而且加入其中的对象宽度也将自动调整到QVBoxLayout的宽度。
第11,12行:vbox.addWidget(label)
vbox.addWidget(btnQuit),调用QVBoxLayout的addWidget方法,将前面创建的lablel,btnQuit添加到容器中,同时成为容器的子类对象。
第13行:window.setLayout(vbox)
将vbox容器添加到窗口,同时成为window的对类对象。
第14行:btnQuit.clicked.connect(app.quit)
给btnQuit对象的clicked信号句柄赋值,本句中是应用程序的退出函数(app.quit),称为槽(slot)。
第15行:window.show()
将窗口显示在屏幕上。
第16行:sys.exit(app.exec_())
进入该程序的主循环。事件处理从本行语句开始。主循环接受事件消息并将其分发给程序的各个部件。