Python深度学习实战PyQt5基本控件使用解析

news2024/11/28 8:24:50

PyQt5 提供了丰富的输入输出控件。本文介绍通过 QtDesigner 工具栏创建常用的基本控件,包括各种按钮控件、文本输入控件和调节输入控件

1. PyQt5 控件简介

1.1 什么是控件

控件也称控件对象,是 Qt用户界面上最基本的组件类型,也是构成用户界面的基本结构。用户界面上显示的所有内容都是控件,例如按钮、标签、文本框,又如菜单栏、工具栏、状态栏,甚至整个窗口本身也是控件。

QWidget 类是 PyQt5 的基类,也是所有控件的父类。所有的 Qt 控件都是 QWidget 类的子类,因此都继承了 QWidget 类的特性,可以接收用户的输入事件,如鼠标和键盘输入,并可以在用户界面上显示控件内容,还可以存放其它控件。

1.2 编辑控件的属性

控件具有属性。不同类型的控件具有部分相同的属性,也具有一些不同的专有属性。

控件的相同属性包括:名字,形状,位置,大小,设置格式。控件的专用属性包括:展示内容,接受输入,用户交互,日期,框架,等等。

所有的 Qt 控件都是 QWidget 类的子类,继承了 QWidget 类的属性。因此,我们学习控件可以按类进行学习,先学习其继承的父类的通用属性,再学习控件所特有的专有属性。对于控件的学习就是一个类的继承关系的结构图。

我们以图形界面 uiDemo5.ui 为例,介绍控件的通用属性,并对控件的属性进行编辑修改。

如前所述,QtDesigner 右侧上方的 “对象查看器” 显示了界面中的控件名称和结构,下方的 “属性编辑器” 显示了选中的控件对象的各种属性。在图形界面中选择某个控件,或者在 “对象查看器” 中选择某个控件,在"属性编辑器" 就会显示该控件对象的属性。

不论是窗口对象 MainWindow、菜单栏 menubar、工具栏 toolBar,还是按钮 pushButton、编辑行 lineEdit,都有一些相同的属性,例如:

objectName:控件名,非常重要。准确的说是控件的 ID,Python 程序中访问控件、控件交互都是使用 objectName。所有控件都必须具有唯一的 objectName,不能重名。不能使用中文字符。

geometry:控件的大小和位置。

  • 控件的宽度和高度可以修改,对于 MainWindow 来说控件的宽度/高度就是图形界面程序窗口的宽度/高度。

  • 控件位置 (X, Y) 是控件在窗口控件的坐标值,MainWindow 的控件位置不能修改,其它控件的位置 (X, Y) 可以根据需要修改。

  • minimumSize、maximumSize 是主窗口大小拉伸后,控件对象的最小尺寸、最大尺寸。

font:控件显示的字体选择,包括字体、字号、风格、效果等选项。

1.3 PyQt5 的控件类型

要了解 QtWidgets 类的子类,可以使用 “subclasses()” 将所有的子类打印出来,共有约 30个子类。

importPyQt5
print(QtWidgets.QWidget.__subclasses__())

这些控件类型,总体上可以分类如下:

输入控件:

  • 按钮:QPushButton(按键按钮),QToolButton(工具按钮),QRadioButton(单选框),QCheckButton(多选框),QCommandLinkButton(连接命令的按钮)

  • 键盘输入控件:QlineEdit(单行输入),QTextEdit(多行输入),QPlainTextEdit(普通多行输入),QkeySequenceEdit(快捷键输入)

  • 调节输入控件:QAbstractSpinBox(步长调节输入),QDateEdit(日期输入),QTimeEdit(时间输入),QDateTimeEdit(日期和时间输入)

  • 数字调节框控件:QSpinBox(整型数字调节框),QDoubleSpinBox(浮点数字调节框)

  • 滑动输入控件:QDial(旋转拖滑输入),QSlider(直线拖动输入),QScrollBar(滚动条),QRubberBand(橡皮筋拖拽)

  • 下拉输入控件:QComboBox(组合框下拉选项),QSlider(直线拖动输入),QScrollBar(滚动条),QRubberBand(橡皮筋拖拽)

  • 对话框输入控件:QDialog(对话框),QColorDialog(颜色对话框),QFileDialog(文件对话框),QFontDialog(字体对话框),QInputDialog(输入对话框)

  • 日历控件:QCalendarWidget(日期选择部件)

显示控件:

  • 内容显示控件:QLabel(显示框),QLCDNumber(液晶显示器),QProgressBar(进度条)

  • 对话框显示控件:QMessageBox(信息提示框),QErrorMessage(错误提示框),QProgressDialog(进度提示框)

高级控件:

  • 容器控件:QToolBox,QDialogButtonBox,QGroupBox,QMdiSubWindow

  • 结构控件:QMainWindow,QTabwidget,QStackedWidget,QSplitter,QDockWidget

  • 滚动控件:QTextBrowser,QScrollArea,QAbstractItemView,QMdiarea,QGraphicsView

  • 辅助控件:QFocusFrame,QSizeGrip,QDesktopWidget

  • 其它控件

在 QtDesigner 左侧的 “WidgetBox” 工具栏中,将常用的控件按类别进行分组。用鼠标将工具栏中的控件图标拖拽到 QtDesigner 中间的图形界面编辑窗口,就在图像界面创建了一个所选择的控件。

2. 按钮控件

2.1 按钮控件简介

按钮是最常用的控件类型。

在 QtDesigner 左侧的 “WidgetBox” 工具栏中的"Buttons" 组,设有多种不同类型的按钮控件:PushButton(按键按钮),QToolButton(工具按钮),QRadioButton(单选框),QCheckButton(多选框),QCommandLinkButton(连接命令的按钮)。QDialogButtonBox(标准按钮盒)提供一系列标准按钮,相当于按钮控件的组合。

按钮控件的常用属性:

text:显示文本

icon:设置图标

iconSize:图标大小

shortcut:设置快捷键

checkable:设置是否自动切换按钮

checked:设置默认选中状态

autoRepeat:设置是否会在用户按下时自动重复

autoExclusive:设置是否启用自动排他性(设置多选框)

按钮控件的信号触发条件:

clicked():当按钮被第一次按下然后释放时发出信号

clicked(bool):当按钮被第一次按下然后释放时发出信号,并将当前状态传递给外界

pressed():当鼠标光标在按钮内时,按下鼠标左键发出信号

released():当释放鼠标左键时发出信号

toggled(bool):按钮的状态发生变化时发出信号,并将当前状态传递给外界

按钮控件常用的的模式/状态:

  • 可用或不可用,禁用时按钮变灰

  • 标准按钮,开关按钮或菜单按钮

  • 打开或关闭(仅用于开关按钮)

  • 默认状态或正常状态

  • 是否自动重复

  • 是否处于按下状态

用鼠标将工具栏中的按钮控件拖拽到 QtDesigner 中间的图形界面编辑窗口,就在图像界面创建了一个按钮控件。如下图所示,我们在图形界面 uiDemo5.ui 的左侧,创建了几种不同的按钮控件。

2.2 按键按钮(QPushButton)

QPushButton(按键按钮)是最常用的按钮,按下(或者单击)按钮可以执行某个操作或回答问题,例如:确定,应用,取消,关闭,是,否和帮助。

按钮控件通常显示一个文本标签(text),可以为按钮选择一个图标(icon),还可以选择设置快捷键(shortcut)。

按键按钮的上述属性,都可以在 “属性编辑器” 中相应的属性行中进行编辑修改。

当按键按钮被鼠标或快捷键激活时,按钮会发出 clicked() 信号,可以通过连接槽函数来触发特定的操作。

2.3 其它按钮

QToolButton(工具按钮)常用于工具栏, 通常在创建 QAction 实例时创建。工具按钮通常显示一个图标,可以快速访问特定的命令或选项。

QRadioButton(单选框)是一个带有文本标签的单选框,可以打开(选中)或关闭(未选中)。单选框被选中或者清除时,都会发出 “toggled()” 信号,可以通过连接槽函数来触发特定的操作。

QCheckButton(多选框)是一个带有文本标签的复选框,除了可以打开(选中)或关闭(未选中),还提供了半选状态(可选项)。复选框被选中或者清除时,都会发射 “stateChanged()” 信号,可以通过连接槽函数来触发特定的操作。

单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。

QCommandLinkButton(连接命令的按钮)外观像一个扁平化的 QPushButton,并且自带了一个向右的图标,其用途类似于类似于单选按钮,用于一组互斥选项之间进行选择。

QDialogButtonBox(标准按钮盒)提供一系列标准按钮,可以水平或垂直布置,常用于对话框和消息框。 Qt 定义的标准按钮包括:Yes、No、OK、Cancel、Ignore、Open、Save、Close、Apply、Help 等等,用户可以自定义添加。

3. 输入控件

3.1 输入控件简介

在 QtDesigner 左侧的 “WidgetBox” 工具栏中的"Input Widget" 组,设有多种不同类型的输入控件,例如:

文本输入控件:QlineEdit(单行输入)、QTextEdit(多行输入)、QPlainTextEdit(普通多行输入);

数字输入控件:QSpinBox(整型数据输入)、QDoubleSpinBox(浮点数据输入);

调节输入控件:QAbstractSpinBox(步长调节输入)、QDateEdit(日期输入)、QTimeEdit(时间输入)、QDateTimeEdit(日期和时间输入)。

用鼠标将工具栏中的输入控件拖拽到 QtDesigner 中间的图形界面编辑窗口,就在图像界面创建了一个按钮控件。如前图所示,我们在图形界面 uiDemo5.ui 的中间和右侧,创建了几种不同的输入控件。

3.2 文本输入控件

单行文本输入框(QlineEdit)

QLineEdit 控件是一个单行文本编辑器, 允许用户输入和编辑单行文本,并支持撤消、重做、剪切、粘贴及拖放功能。

QLineEdit 控件的属性、信号、函数较多,并支持密码输入方式、文本框自动补全,在次不作详细介绍,有兴趣的读者可以查看相关文档和例程。

多行文本输入框(QTextEdit)

QTextEdit 控件是一个 “所见即所得” 的多行富文本编辑器, 允许用户输入和编辑多行文本,并支持HTML4 标签子集,可以加载纯文本和富文本的文件,适用于编辑和浏览大型的富文本文件。

QTextEdit适用于段落和字符。可以显示图像,列表和表格。如果文本太大而无法在文本编辑的视口中查看,则会出现滚动条。

TextEdit不仅可以显示文本,还可以显示HTML文档

普通多行输入(QPlainTextEdit)

QPlainTextEdit 控件是一个多行的纯文本编辑器,允许用户输入和编辑多行纯文本,不支持表格或嵌入帧。针对纯文本的处理进行了优化,可以处理更大的文档和更快速的响应。

3.3 调节输入控件

步长调节输入(QAbstractSpinBox)

QAbstractSpinBox 将所有步长调节器的通用的功能抽象出了一个父类,也可以直接实例化使用。QAbstractSpinBox包含了一个QLineEdit和两个QPushbutton,数据的更改可以通过点击按钮或使用键盘输入。

日期和时间输入(QDateEdit/QTimeEdit/QDateTimeEdit)

QDateEdit 控件用于编辑日期,QTimeEdit 控件用于编辑时间,QDateTimeEdit同时编辑日期时间的控件。可以使用键盘上的上下键头按钮来增加或减少日期、时间。

整型数字调节框(QSpinBox)

QSpinBox 是一个计数器控件,允许用户选择一个整数通过上下按键递增或者递减,也可以直接输入整数的数值。默认取值范围为 0-99,每次调节的步长为 1。

浮点数字调节框(QDoubleSpinBox)

QDoubleSpinBox 是浮点数据计数器控件,用于处理浮点数值。默认精度为 2位小数。-

4. Python 应用程序调用图形界面

在 QtDesigner 将设计的图形界面保存为 uiDemo5.ui,运行 PyUIC 将选中的 .ui 文件转换为 .py 文件,在该路径生成 uiDemo5.py 文件。

我们编写一个主程序调用设计的图形界面 uiDemo5.py,就可以完成一个图形界面应用程序。

# GUIdemo5.py
# Demo5 of GUI by PyQt5
# Copyright 2021 youcans, XUPT
# Crated:2021-10-12
importsys
fromPyQt5.QtWidgets importQApplication, QMainWindow, QMessageBox
fromuiDemo5 importUi_MainWindow  # 导入 uiDemo5.py 中的 Ui_MainWindow 界面类
classMyMainWindow(QMainWindow, Ui_MainWindow):  # 继承 QMainWindow 类和 Ui_MainWindow 界面类
    def__init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)  # 初始化父类
        self.setupUi(self)  # 继承 Ui_MainWindow 界面类
    deftrigger_actHelp(self):  # 动作 actHelp 触发
        QMessageBox.about(self, "About",
                          """数字图像处理工具箱 v1.0\nCopyright YouCans, XUPT 2021""")
        return
if__name__ =='__main__':
    app =QApplication(sys.argv)  # 在 QApplication 方法中使用,创建应用程序对象
    myWin =MyMainWindow()  # 实例化 MyMainWindow 类,创建主窗口
    myWin.show()  # 在桌面显示控件 myWin
    sys.exit(app.exec_())  # 结束进程,退出程序

由于本文主要介绍常用的基本控件,在程序中尚未将控件的信号连接槽函数,因此运行程序 uiDemo5.py 时,其中的一些按钮控件在点击后并没有触发操作。

在下一篇文章中,我们将介绍 PyQt5 中的页面布局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

作为研发如何使用Github Api?

文章目录使用步骤账号创建进行开发者相关设置API操作演示Github API好处推荐的Github API🌟个人主页: 个人主页 🚵‍♀️个人介绍:每天进步一点点,生活变得好一点点。 📌作为一位开发,不管是非工作的还是工作中的人士&…

指针的进阶

指针的进阶一级目录二级目录三级目录先来回顾一下:字符指针指针数组数组指针数组指针的定义&数组名vs数组名数组指针的使用数组参数 指针参数一维数组传参二维数组传参一级指针传参二级指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组笔…

图表控件TeeChart for .NET系列教程六:选择一个系列类型(使用系列)

TeeChart for .NET是优秀的工业4.0 WinForm图表控件,官方独家授权汉化,集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。 TeeChart for .NET最新…

python基于django的自媒体社区交流平台

自媒体社区平台采用python技术,基于django框架,mysql数据库进行开发,实现了以下功能: 本系统主要包括管理员,用户,商家和普通管理员四个角色组成,主要包括以下功能: 1;前台:首页、需求通告、优质案例、帮助中心、意见反馈、个人中心、后台管理…

区块链安全:从web3.0到数字货币

互联网发展的三个阶段 web1.0 静态页面,内容只能供用户去阅读,类似于在网络上读报纸或者看书。 web2.0 动态互联网,实现用户之间的互动,比如twitter,facebook,titok等。 web2.0中厂商用免费或极低的成…

基于UDP/TCP实现客户端服务器的网络通信程序

目录:前言基于UDP实现客户端服务器的网络通信程序基于TCP实现客户端服务器的网络通信程序前言网络编程的核心是Socket API,它是操作系统给应用程序提供的网络编程API,可以认为是socket api是和传输层密切相关的。在传输层里面,提供…

leetcode刷题---递归思想

leetcode刷题---递归思想)1.1 递归介绍1.2 基本步骤1.3 代表题目1.3.1 入门题---青蛙跳1.3.2.1 初级题226.翻转二叉树112.路径总和1.3.3 中级题---汉诺塔问题1.3.4 进阶题---细胞分裂1.1 递归介绍 如果在函数中存在着调用函数本身的情况,这种现象就叫递…

java Resource

参看本文前 你要先了解 spring中的 Autowired和Qualifier 注解 如果之前没有接触过 可以查看我的文章 java spring 根据注解方式按(类型/名称)注入Bean 然后 创建一个java项目 引入spring注解方式 所需要的包 然后 在src下创建包 我们这里直接叫 Bean 在Bean下创建包 叫UserD…

【GIC】处理中断

目录 一、当中断变为pending时发生了什么? 二、中断响应 三、虚假的中断 四、运行优先级&抢占 五、结束中断 六、检查系统的当前状态 6.1最高优先级等待中断和运行优先级 6.2单个INTID的状态 一、当中断变为pending时发生了什么? 前面的文章…

0207 事件

事件监听事件监听版本事件类型事件概念事件在编程时系统内发生的动作或者发生的事情例子点击按钮鼠标经过拖拽鼠标事件监听(注册事件,绑定事件)让程序员检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应…

PHP立体安全:一网打尽攻击向量

PHP立体安全:一网打尽攻击向量 所谓攻击向量,就是指黑传递有效负载或恶意结果而可以访问计算机或网络服务器的路径或方法。 PHP的安全并不只有危险函数, 这只是冰山一角 。本文将介绍PHP从汇编层面到框架层面直到标准层面的所有攻击向量。 攻…

【H5】html实现微信授权登陆

html实现微信授权登陆前言网页授权的两种 scope 的区别开发指南第一步:用户同意授权,获取code第二步:通过 code 换取网页授权access_token第三步:拉取用户信息(需 scope 为 snsapi_userinfo)代码实现:效果图总结前言 …

用Python出了3000道数学题,外甥表示要正月剪头

人生苦短,快学Python! 过年期间发现小外甥已经上小学了,我姐说老师今天给他们布置了寒假作业:每天坚持做乘法和加减法混合运算。 这我必须帮帮忙,用Python写了一段自动生成小学生计算题的代码,并支持导出…

Python入门之ChatGPT的API调(Python版)

一、Python环境部署 参考Python 环境搭建 | 菜鸟教程 Python官网:Welcome to Python.org Python文档下载地址:Our Documentation | Python.org 二、Thonny的安装 安装包地址:Thonny, Python IDE for beginners 三、ChatGPT的Key申请 网…

学Qt想系统的学习,看哪本书?

Qt 是一个跨平台应用开发框架(framework),它是用 C语言写的一套类库。使用 Qt 能为 桌面计算机、服务器、移动设备甚至单片机开发各种应用(application),特别是图形用户界面 (graphical user in…

虹科分享|在ntopng中使用多用户模式

并非所有 ntop 用户都知道 ntopng 本机实现了多用户支持。也就是说,您可以使用ntopng收集和分析来自多个用户的流量,并向每个用户显示自己的流量,隐藏其余所有流量。 您需要做的就是非常简单: 1. 启动 ntopng 并将其配置为接收受…

Python将字典转换为csv

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

设计模式C++实现4:装饰模式

前言 参考大话设计模式; 详细内容参见大话模式一书第六章,该书使用C#实现,本实验通过C语言实现。 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰…

MapReduce工作原理

一.MapReduce工作流程图 1、分片操作:FileInputstream,首先要计算切片大小,FileInputstream是一个抽象类,继承InputFormat接口,真正完成工作的是它的实现类,默认为是TextInputFormat,TextInputF…

docker一键部署网址导航+博客+管理系统(强势开源)

花森门户 在线地址(首次加载请耐心等待):http://n.huasen.cc/ 码云仓库地址:https://gitee.com/HuaSenJioJio/huasenjio-compose Github仓库地址:https://github.com/huasenjio/huasenjio-compose huasenjio 系列网站增添新作品,&…