QtforPython学习笔记—应用程序初探

前言

本文详细介绍如何在 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 应用程序开发。

当前题目:QtforPython学习笔记—应用程序初探
URL分享:http://www.36103.cn/qtweb/news32/26382.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联