Skip to main content
 首页 » 编程设计

Python入门教程

2022年07月19日139rubylouvre

PyQt5入门教程

本文从最简单入门开始,介绍PyQt创建第一个桌面应用。示例采用Python3和PyQt5。

1. 创建应用

下面是最小化的PyQt应用,其甚至不包括窗口,如果运行该程序,说明都不会发生,但其仍在运行。

import sys 
from PyQt5.QtWidgets import QApplication 
 
# 每个应用仅需要一个 QApplication 实例. 
# 传入sys.argv参数实现从命令行给应用传入参数. 
# 如果确定无需从命令行传入参数,可以直接使用QApplication([]). 
app = QApplication(sys.argv) 
 
# 开始事件循环. 
app.exec_() 
 
# 在结束应用和事件循环停止之前,应用不会到达这里. 
print("Finished") 

逐行检查代码,首先从QtWidgets子模块导入PyQt5中QApplication类。然后创建QApplication实例,传入sys.arg(其包含命令行参数),通过该参数我们可以传入命令行参数给应用。如果确定不需要命令行参数,可以保持为空列表,如:

app = QApplication([]) 

最后调用app.exec_()启动事件循环。启动应用观察控制台,你会发现不会执行该print(“Finished”)语句,除非你结束应用。这时因为app.exec_()启动了事件循环使得程序阻塞等待事件。

如果需要在事件循环之前实现相关业务,需在该行代码之前。一般通过__init__方法进行初始化工作。

2. 创建窗体

上面示例很无聊,什么都看不到。下面给应用增加一个窗体,当然需要增加相应代码。下面示例实现一个最简单的单个窗体应用。

import sys 
from PyQt5.QtWidgets import QApplication, QWidget 
 
 
app = QApplication(sys.argv) 
 
window = QWidget() 
window.show() # 重要提示!!!!! 窗体默认是隐藏的. 
 
# Start the event loop. 
app.exec_() 

任何没有指明父对象(容器组件)的QWidget都是自己的窗体,这种方式可以创建窗体,但有专门的类QMainWindow实现窗体。其作为应用的主窗体包括工具栏、状态栏以及悬浮组件。下面使用QMainWindow重构代码:

import sys 
from PyQt5.QtWidgets import QApplication, QMainWindow 
 
 
app = QApplication(sys.argv) 
 
window = QMainWindow() 
window.show() # IMPORTANT!!!!! Windows are hidden by default. 
 
# Start the event loop. 
app.exec_() 

运行上面代码可以看到空窗体应用。
在这里插入图片描述

3. 增加控件

虽然有了窗体仍很无趣,下面我们继续并增加显示文本的控件QLabel,QMainWindow只能通过.setCentralWidget()方法容纳单个组件。如果需要增加更多组件并合理排列,需要使用Qt的布局。

import sys 
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow 
from PyQt5.QtCore import Qt 
 
# 创建QMainWindow的子类用于定制应用主窗体 
class MainWindow(QMainWindow): 
 
    def __init__(self, *args, **kwargs): 
        super(MainWindow, self).__init__(*args, **kwargs) 
 
        self.setWindowTitle("My Awesome App") 
 
        label = QLabel("This is a PyQt5 window!") 
 
        # `Qt` 命名空间有很多控件自定义属性 
        # 参考文档: http://doc.qt.io/qt-5/qt.html 
        label.setAlignment(Qt.AlignCenter) 
 
        # 设置Window的中心组件. 默认控件默认会扩展占满所有控件 
        self.setCentralWidget(label) 
 
 
app = QApplication(sys.argv) 
 
window = MainWindow() 
window.show() 
 
app.exec_() 

运行程序应该看到窗体,但这次窗体中间多了QLabel控件,并且可以拖到边缘改变大小,代码中的对齐设置使得文本居中显示。
在这里插入图片描述

4. 总结

本文介绍PyQt5的入门程序,实际应用中一般会通过Qt Designer进行快速设计界面,同时又让界面代码和业务代码进行分离。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/102004555