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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python深度学习实战PyQt5基本控件使⽤解析
⽬录
1. PyQt5 控件简介
1.1 什么是控件
1.2 编辑控件的属性
1.3 PyQt5 的控件类型
输⼊控件:
显⽰控件:
⾼级控件:
2. 按钮控件
2.1 按钮控件简介
2.2 按键按钮(QPushButton)
2.3 其它按钮
3. 输⼊控件
3.1 输⼊控件简介
3.2 ⽂本输⼊控件
3.3 调节输⼊控件
4. Python 应⽤程序调⽤图形界⾯
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个⼦类。

import PyQt5
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
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from uiDemo5 import Ui_MainWindow # 导⼊ uiDemo5.py 中的 Ui_MainWindow 界⾯类
class MyMainWindow(QMainWindow, Ui_MainWindow): # 继承 QMainWindow 类和 Ui_MainWindow 界⾯类
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent) # 初始化⽗类
self.setupUi(self) # 继承 Ui_MainWindow 界⾯类
def trigger_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 中的页⾯布局。

传送门
以上就是Python深度学习实战PyQt5基本控件使⽤解析的详细内容,更多关于PyQt5基本控件使⽤的资料请关注其它相关⽂章!。

相关文档
最新文档