1.安装
pip install pyqt5==5.15.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.测试是否安装成功
import sys
from PyQt5.QtWidgets import *
if __name__ == '__main__':
app = QApplication([]) # 1
label = QLabel('Hello, PyQt!') # 2
label.show() # 3
sys.exit(app.exec()) # 4
(#1) 通过**app = QApplication([])**语句实例化一个QApplication对象,该对象的作用是接收一个列表类型的值,其实就是用来接收命令行参数的。由于该程序不会与命令行“打交道”,所以直接传入空列表[]即可。如果程序需要接收命令行参数,则可以传入sys.argv
(#2) 通过**label = QLabel(‘Hello, PyQt!’)**语句实例化一个QLabel控件,我们通常用它来显示文本或图片。
label = QLabel('Hello, PyQt!') 等价于下面,使用setText()方法 label= QLabel() label.setText('Hello, PyQt!')
(#3) 因为控件默认都是隐藏的,所以要调用show()方法将其显示出来。
(#4) 通过**app.exec()**可以让PyQt程序运行起来,而当用户正常关闭窗口时,app.exec()会返回数值0,将其传给sys.exit(),从而让Python解释器正常退出
在PyQt中,一个控件可以看作一个窗口。
3.在PyQt程序中嵌入HTML代码
创建一个index.html文件,内容如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello, PyQt!</title>
</head>
<body>
<h1>I love PyQt.</h1>
</body>
</html>
pyqt5代码使用如下
import sys
from PyQt5.QtWidgets import *
if __name__ == '__main__':
app = QApplication([])
label = QLabel()
with open('index.html', 'r', encoding='utf-8') as f:
label.setText(f.read())
label.show()
sys.exit(app.exec())
除了可以使用HTML代码来修改文本样式,我们也可以通过PyQt自身提供的类(比如QFont)来实现相同的效果。当然,还可以使用QSS(Qt Style Sheets,Qt样式表)来实现。
4.如何在一个页面中显示多个组件
在pyqt5中一个组件就相当于一个页面,如果我们创建多个组件,就会有多个页面产生
多个组件形成的多个页面
import sys
from PyQt5.QtWidgets import *
if __name__ == '__main__':
app = QApplication([])
label_1 = QLabel('Label 1')
label_2 = QLabel('Label 2')
label_1.show()
label_2.show()
sys.exit(app.exec())
会有两个页面,一个label1 一个label2,并且这两个页面组件没有组合在一起
将多个组件形成一个页面
import sys
from PyQt5.QtWidgets import *
class Window(QWidget): # 1
def __init__(self):
super(Window, self).__init__() #必须有
label_1 = QLabel('Label 1', self) #注释2开始
label_2 = QLabel('Label 2', self) #注释2结束
if __name__ == '__main__':
app = QApplication([])
window = Window() #注释3开始
window.show() #注释3结束
sys.exit(app.exec())
结果是这两个组件形成了一个页面,一个页面内既有label1组件也有label2组件
(#1) 让编写的Window类继承QWidget。可以把QWidget看成一个空白的窗口,而我们要做的就是往里面添加控件。
(#2) 在Window类中,我们实例化两个QLabel控件对象。在该程序中,QLabel除了接收一个字符串,还指明一个父类实例对象self,这样QLabel控件就能够显示在窗口上。
(#3) 在程序入口处,我们实例化Window对象,并调用show()方法将窗口显示出来。
当对一个窗口调用show()方法之后,窗口中的控件会一同显示出来,不必再调用自身的show()方法