当前位置:主页 > 查看内容

Qt for Python学习笔记—应用程序初探

发布时间:2021-06-10 00:00| 位朋友查看

简介:前言 本文详细介绍如何在 Window 平台上用纯代码方式(不借助 Qt Designer 工具)来开发一个简单的 Qt for Python 入门 GUI 应用程序(含详细的代码解析),让读者有个基本的感觉,供各位 Qt for Python 的初学者们参考。 注:本系列将会以 PySide6 为例进行介绍……

前言

本文详细介绍如何在 Window 平台上用纯代码方式(不借助 Qt Designer 工具)来开发一个简单的 Qt for Python 入门 GUI 应用程序(含详细的代码解析),让读者有个基本的感觉,供各位 Qt for Python 的初学者们参考。

注:本系列将会以 PySide6 为例进行介绍,原则上同样适用于 PyQt6(只需将代码中导入语句的 PySide6 替换为 PyQt6 即可)。

1. 简介

既然开发环境已经准备就绪,那就让我们通过开发一个简单的示例程序来首次探索它。

本示例程序虽然简单,但会涉及到如下内容,希望能帮助初学者对使用 PySide6 开发 Python GUI 应用程序代码框架有个初步的印象。

  • 如何导入 PySide6 模块(或类)
  • 如何创建一个应用程序(QApplication)对象
  • 如何创建一个标签(QLabel)对象作为主窗口,并在构造时设置其相关属性,使用 Qt 样式表设置标签属性。
  • 如何设置主窗口(即标签)标题
  • 如何显示主窗口(即标签)
  • 如何运行应用程序

2. 示例目标及原型

我们确定该应用程序所设想达到的目的,并给出其原型。

一、示例目标:

本示例目标是创建一个 Python GUI 应用程序,其主窗体中(水平和垂直)居中显示一段蓝色的文本信息,随着窗口的拉伸,该文本大小、颜色保持不变,但其位置仍然在主窗体中保持(水平和垂直)居中。主窗体标题为“PySide6 示例程序”。

二、示例原型:

在进行 GUI 应用程序编码之前,一般建议先勾画出 GUI 框架(窗体及各部件的布局等)。本示例原型如下:

示例原型

3. 示例代码及运行

一、编辑代码

利用代码编辑器编辑示例代码,并保存为文件(如:C:\MyPySide6\MyPySide6App1.py)。

  1. from PySide6.QtWidgets import (QApplication, QLabel) 
  2.  from PySide6.QtCore import Qt 
  3.   
  4.  app = QApplication([]) 
  5.   
  6.  label = QLabel("用 PySide6 开发的第一个 GUI 应用程序!", alignment=Qt.AlignCenter) 
  7.  label.setStyleSheet("color: blu e; font: bold; font-size: 15px;"
  8.  label.setWindowTitle("PySide6示例程序1"
  9.  label.show() 
  10.   
  11.  app.exec_() 

二、运行程序

从控制台终端通过命令方式(或直接在 Visual Studio Code 上点击主窗体上运行按钮)来运行该示例程序(通常要先进入代码所在目录下):

C:\MyPySide6> python MyPySide6App1.py

顺利的话应该会出现以下程序窗口(可以试着拉伸一下窗口看看效果):

程序运行窗口

怎么样?感觉还不错吧,简简单单8行 Python 代码,就能生成一个看上去还凑合的 GUI 应用程序了。相信可以大大增强您接下来的 Qt for Python 开发之旅信心吧。

4. 代码解析

什么?上面的代码看不懂! 没关系,我们才刚起步,很多知识还没学呢。那下面我就对上述代码进行一个较为详细的解析,希望能帮助您理解和掌握这些代码。

(1)首先,导入相关模块(或类)

  1. from PySide6.QtWidgets import (QApplication, QLabel) 

PySide6 模块中的子模块提供对相关 Qt API 的访问。由于本示例后续代码中会用到 PySide6.QtWidgets.QApplication 类和 PySide6.QtWidgets.QLabel 类,所以要从 PySide6.QtWidgets 模块导入 QApplication 类、QLabel 类。

注:还有其他几种导入方式:

注1:可以根据个人习惯选择具体的导入方式。本人倾向于选择最开始的导入方式。

    1. # 从PySide6.QtWidgets模块导入所有的类,后续代码可以直接使用相关类 
    2.  from PySide6.QtWidgets import * 
    3.   
    4.  # 导入PySide6.QtWidgets模块,后续代码可以直接使用相关类 
    5.  import PySide6.QtWidgets 
    6.   
    7.  # 从PySide6库中导入QtWidgets模块,后续代码在使用相关类时,需要加上该类对应的模块名 
    8.  from PySide6 import QtWidgets 
  • 注2:在 PySide6 中,一般而言,QtXxxx 代表为 Qt 模块,QXxxxxx 代表为 Qt 模块中的类。
  • 注3:关键词 import 后可以跟单个或多个类(用逗号隔开),可以使用括号,也可以不使用括号。
  • 注4:如果想使用 PyQt6 模块,那么只需将代码中导入语句的 PySide6 替换为 PyQt6 即可。

(2)其次,创建一个应用程序对象

  1. app = QApplication( [] ) 

使用 QApplication 类创建一个应用程序实例对象app,括号内的[]表示构造时不含传递参数。

  • 注1:QApplication 是管理 Qt GUI 应用程序的控制流程和主要设置的类。任何 Qt GUI 应用程序都必须包含一个 QApplication 类的实例对象。对于非 GUI 的 Qt 应用程序,可以使用 QCoreApplication 类。
  • 注2:由于 Qt 可以从命令行接收参数,因此在构造时可以将任何参数传递给 QApplication 对象(但要注意需要导入 sys 模块)
  1. import sys 
  2. app = QApplication( sys.argv ) 

(3)接着,创建一个标签对象作为主窗体

  1. label = QLabel("用 PySide6 开发的第一个 GUI 应用程序!", alignment=Qt.AlignCenter) 
  2. label.setStyleSheet("color: blue; font: bold; font-size: 15px;"

通常会使用 QMainWindow 类、或 QWidget 类或 QDialog 类来创建一个应用程序的主窗体。本示例中为简化直接使用 QLabel 类创建一个标签对象 label 作为本应用程序的主窗体,并在构造时对该标签的内容和对齐方式进行初始化设置,然后使用 QLabel 类的 setStyleSheet() 方法设置标签文本的颜色、粗体和字体大小属性:

  • ——文本内容:“用 PySide6 开发的第一个 GUI 应用程序!”
  • ——文本位置:(水平和垂直)居中
  • ——文本颜色:蓝色
  • ——字体:粗体
  • ——字体大小:15像素

(4)再接着,设置主窗体(即标签)标题

  1. label.setWindowTitle("PySide6 示例程序"

调用 QLabel 类的 setWindowTitle() 方法设置主窗体(即标签)的标题("PySide6 示例程序")。

(5)然后,显示主窗体(即标签)

  1. label.show() 

调用 QLabel 类的 show() 方法来显示主窗体(即标签)。

(6)最后,运行应用程序

  1. app.exec_() 

执行 QApplication 类的 exec_() 方法,将使得 Qt GUI 进入一个主事件循环,直到程序中调用 exit()、quit() 或关闭应用程序的主窗口时才会结束。

注:在主事件循环开始后,它将会接收用户界面事件以及其他事件源的事件,并向相应的窗口进行分发和处理。此外,它还完成 Qt 应用程序的初始化和应用程序运行结束后的善后处理,并提供会话管理。

结束语

本系列介绍如何在 Python 中使用 Qt for Python 进行 GUI 应用程序开发。

【责任编辑:未丽燕 TEL:(010)68476606】
本文转载自网络,原文链接:https://www.toutiao.com/a6925284938816635396/
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐