RHZ'S BLOG | 个人分享

  • 首页
  • 笔记
  • 小日常
  • 音乐
  • 读书
  • 软件分享
YOLO
  1. 首页
  2. 笔记
  3. python
  4. 正文

PyQt5|GUI程序框架(A)

2022年8月11日 371点热度 1人点赞 0条评论

1. 基本框架

启动Python自带IDLE→点击“File”→“New File”菜单项,打开一个文件编辑窗口,在此窗口中输入下面的程序,并保存为文件demo2_1Hello.py,此文件保存在Demo2_1目录下

## demo2_1Hello.py
## 使用PyQt5,纯代码化创建一个简单的GUI程序
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
#创建应用程序
app = QtWidgets.QApplication(sys.argv)   #创建app,用QApplication类
widgetHello = QtWidgets.QWidget()        #创建窗体,用QWidget类
widgetHello.resize(280,150)               #设置窗体的宽度和高度
widgetHello.setWindowTitle("Demo2_1")    #设置窗体的标题文字

#创建标签对象
LabHello = QtWidgets.QLabel(widgetHello) #创建标签,指定父容器为widgetHello,这样标签                       
                                         LabHello才会显示在窗体widgetHello上
LabHello.setText("Hello World, PyQt5")   #设置标签文字
font = QtGui.QFont()     #创建字体对象font,用QFont类
font.setPointSize(12)    #设置字体大小
font.setBold(True)       #设置为粗体
LabHello.setFont(font)   #设置为标签LabHello的字体
size=LabHello.sizeHint() #获取LabHello的合适大小,返回值是QSize类对象
LabHello.setGeometry(70, 60, size.width(), size.height())

#窗体显示和程序运行
widgetHello.show()       #显示对话框
sys.exit(app.exec_())    #应用程序运行

首先需要用QApplication类创建一个应用程序实例,然后创建一个窗体(窗体类主要有QWidget、QDialog、QMainWindow),再创建界面组件(例如一个QLabel组件)并在窗体上显示,最后是显示窗体并开始应用程序的消息循环。

从上面的程序中可以看出,PyQt5中的类都是以大写字母Q开头命名的,如QWidget、QApplication、QLabel等,这样的命名规则很容易将PyQt5的类与其他的类或变量区分开来。

2. 使用可视化设计窗体的GUI程序

可视化界面设计工具Qt Designer,以及Qt Creator中内置的UI Designer-不用再通过编写代码的方式设计窗体

用UI Designer可视化设计UI窗体,然后转换为Python程序,再构建为Python的GUI程序。

操作步骤:

  1. 在UI Designer中可视化设计窗体。
  2. 用工具软件pyuic5将窗体文件(.ui文件)转换为Python程序文件。
  3. 使用转换后的窗体的Python类构建GUI应用程序。

2.1 用UI Designer可视化设计窗体

创建单纯的窗体文件( .ui文件 ):

  • Qt Creator中点击菜单项“File”→“New File or Project…→选择“Qt”分组里的“Qt Designer Form→Choose

选择窗体模板:

  • 选择Widget模板→点击Next按钮→设置文件名为“ FormHello.ui ”→保存到设置的自己的目录下→跟着向导九

Dialog模板,基于QDialog类的窗体,具有一般对话框的特性,如可以模态显示、具有返回值等。
Main Window模板,基于QMainWindow类的窗体,具有主窗口的特性,窗口上有主菜单栏、工具栏、状态栏等。
Widget模板,基于QWidget类的窗体。QWidget类是所有界面组件的基类,如QLabel、QPushButton等界面组件都是从QWidget类继承而来的。QWidget类也是QDialog和QMainWindow的父类,基于QWidget类创建的窗体可以作为独立的窗口运行,也可以嵌入到其他界面组件内显示。

窗体的三种模板
PyQt5|GUI程序框架(A)插图
可视化设计窗体

窗体设计完成后,将这个窗体保存为文件FormHello.ui

PyQt5|GUI程序框架(A)插图1
属性设置

窗体文件FormHello.ui实际上是一个XML文件,它记录了窗体上各组件的属性以及位置分布

2.2 将ui文件编译为py文件

使用PyQt5的工具软件pyuic5.exe将ui文件编译转换为对应的Python语言程序文件,因为安装时自动添加到了系统的PATH环境变量里面,所以俺们可以直接使用cmd窗口来搞!

  • 在Windows的cmd窗口里用cd指令切换到文件FormHello.ui所在的目录→用pyuic5指令编译转换为Python文件→例如,假设文件FormHello.ui保存在目录“C:\Users\10747\Desktop\PyQt5”下,依次执行下面的指令:
cd C:\Users\10747\Desktop\PyQt5
pyuic5 -o  ui_FormHello.py  FormHello.ui

编译后在FormHello.ui文件所在的同目录下生成了一个文件ui_FormHello.py

经过pyuic5编译后,FormHello.ui文件转换为一个对应的Python的类定义文件ui_FormHello.py,类的名称是Ui_FormHello。有如下的特点和功能。

  1. Ui_FormHello.py文件里的类名称Ui_FormHello与FormHello.ui文件里窗体的objectName有关,是在窗体的objectName名称前面加“Ui_”自动生成的。
  2. Ui_FormHello类的函数setupUi()用于窗体的初始化,它创建了窗体上的所有组件并设置其属性。
  3. Ui_FormHello类并不创建窗体FormHello,窗体FormHello是由外部传入的,作为所有界面组件的父容器。

ui_FormHello.py文件只是定义了一个类Ui_FormHello,这个文件并不能直接运行,而是需要在其他地方编程使用这个文件里定义的类Ui_FormHello。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: PyQt5 python
最后更新:2022年8月12日

RHZ

即使单枪匹马,我亦勇敢无畏

点赞
< 上一篇
下一篇 >

文章评论

取消回复
归档
  • 2023年2月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年8月
  • 2021年7月

COPYRIGHT © 2022 RHZ的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2022008933号-1