PyQt5入门教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/neweastsun/article/details/102004555

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进行快速设计界面,同时又让界面代码和业务代码进行分离。

猜你喜欢

转载自blog.csdn.net/neweastsun/article/details/102004555