第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解

【PyQt5】从零到一:Qt Designer 可视化构建 Python GUI 应用 本文详细介绍了如何使用PyQt5和Qt Designer从零开始构建Python GUI应用。从环境配置、工具安装到界面设计,再到实战开发汇率转换器,提供了全面的步骤和实用技巧。文章特别强调了Qt Designer的可视化操作与代码逻辑分离的开发模式,帮助开发者快速掌握PyQt5的核心用法。 阅读详情

一、引言

Qt Designer中的Buttons部件包括Push Button(常规按钮、一般称按钮)、Tool Button(工具按钮)、Radio Button(单选按钮)、Check Box(复选框)、Command Link Button(命令链接按钮)和Dialog Button Box(对话框按钮盒)六种类型,这六种类型的Buttons部件,都是QWidget的直接或间接子类,同时除了Dialog Button Box外,其他五种都是QAbstractButton的直接子类。

本节将详细介绍所有Buttons部件,由于QWidget属性在前面章节已经介绍,因此本节先介绍五大按钮部件的直接父类QAbstractButton相关属性,然后再针对每种部件介绍特有属性。

二、QAbstractButton相关属性

2.1、属性概述

QAbstractButton是按钮类部件的直接父类(Dialog Button Box本身不是按钮),QAbstractButton在Designer中的属性有text、icon、iconSize、shortcut、checkable、checked、autoRepeat、autoExclusive、autoRepeatDelay、autoRepeatInterval十个属性。这十个属性可以分为两类,一类是外观类,包括text、icon、iconSize三个属性,其他七个属性老猿都将其归为操作类属性。

2.1.1、text属性
2.1.1.1、属性介绍

text属性保存按钮上显示的文字,如果按钮未设置文字则为空字符串。如果文字中包含有与符号(’&’),则该按钮会自动设置一个快捷键,快捷键就是’&'后第一个字符,显示时会在该字符下加下划线。例如将PushButton的按钮文字设置为“P&ushButton1”,则显示效果如下:
在这里插入图片描述
可以看到u下面多了下划线,使用“Alt+u”组合键就可以操作该按钮。

注意:
1、如果要在text中显示’&'符号,需要使用两个‘&‘符号;
2、当text中未设置快捷键时,该按钮的快捷键都会被清除。

2.1.1.2 操作方法

可以通过text()获取text属性的值,通过setText(QString )设置text属性的值。

2.1.2、icon属性
2.1.2.1、属性介绍

icon属性保存按钮上展示的图标,图标的缺省大小由图形界面的样式决定,但可以通过 iconSize 属性进行调整。

图标的几种子属性状态的含义与QWidget的windowIcon属性相同,可以参考《PyQt(Python+Qt)学习随笔:Qt Designer中部件的windowIcon属性》的介绍。

2.1.2.2、操作方法

通过icon()可以访问icon属性的值,通过setIcon( QIcon )设置icon属性的值。

2.1.3、iconSize属性

iconSize属性保存按钮图标的大小,这个大小是图标的最大尺寸,小图标不会放大。

可以通过iconSize()和setIconSize(QSize )来访问和设置iconSize的值。

2.1.4、shortcut(快捷菜单) 属性
2.1.4.1、属性及方法介绍

shortcut 属性保存与按钮关联的快捷键。可以使用shortcut()和setShortcut(QKeySequence)访问和设置该属性。

2.1.4.2、补充说明

关于这个属性官网介绍的不多,经老猿实际验证,它与前面介绍的text属性通过‘&’符号设置的快捷键有如下区别:
1、在该属性设置的情况下,text属性的快捷键不起作用;
2、text属性的快捷键只支持一个字符,而这个可以设置多个字符。如将计算器的clear快捷键设置为‘del’三个字符,则设置界面如下:
在这里插入图片描述
3、text属性的快捷键需要使用:Alt+快捷字符触发,而shortcut属性的快捷键就是设置的字符自身,并且可以支持非字母键。

2.1.5、checkable(是否可选择)属性

checkable属性确认按钮是否可以被选中,缺省情况下该值为False,即按钮是不能被选中的。

可选择的pushButton、toolButton、commandLinkButton类按钮按下之后,按钮不会自动弹起来,此时按钮为选中状态,当再次点击按钮时,按钮会弹起来,变为未被选中状态。

可选择的Radio Button、checkBox类按钮按下之后,按钮在选择和不选择状态之间切换,当按钮不能选择时,Radio Button类按钮无法操作,checkBox类按钮需要看tristate是否设置为False,如果设置为了False,则checkBox类按钮也无法操作,否则可以在未选中和半选中之间切换。

可通过isCheckable() 和setCheckable(bool) 读取和设置按钮的可选择状态。

2.1.6、checked(是否选中)属性

checked属性保存按钮是否被选中的状态值,如果为True表示按钮被选中,否则为未被选中。

可以通过isChecked()、setChecked(bool)来访问和设置checked属性。

也可以通过按钮的信号clicked(bool) 来获取按钮的选中状态,信号的槽函数中参数即为按钮的是否选中状态。

2.1.7、autoRepeat、autoRepeatDelay、autoRepeatInterval属性

autoRepeat、autoRepeatDelay、autoRepeatInterval这三个属性为一组属性,用于控制按钮的按下事件是否重复、重复的频次等。

2.1.7.1、autoRepeat

如果启用了autoRepeat,则当按钮按下且鼠标未释放时,会定期发出pressed()、released()和clicked()信号。默认情况下,autoRepeat处于禁用状态。autoRepeat处于允许状态时,延迟时间和重复间隔由autoRepeatDelay、autoRepeatInterva以毫秒为单位定义。

可以通过autoRepeat() 、setAutoRepeat(bool)来访问和设置autoRepeat属性。

注意:如果用快捷键按下某个按钮,则系统将启用自动重复并计时,而不是QAbstractButton类来启用。此种情况下,pressed()、released()和clicked()信号将像正常情况一样发出。

2.1.7.2、autoRepeatDelay

此属性保持自动重复的初始延迟,单位是毫秒。

如果启用了autoRepeat,则autoRepeatDelay定义自动重复开始之前的初始延迟。即首次发送信号之前的延时,也就是在按钮被按下到首次发送信号之间的时间间隔。

可以通过autoRepeatDelay () 、setAutoRepeatDelay (int)来访问和设置autoRepeatDelay 属性。

2.1.7.3、autoRepeatInterval

autoRepeatInterval属性保存自动重复触发按钮的pressed()、released()和clicked()信号每次之间的时间间隔,单位是毫秒。
可以通过autoRepeatInterval() 、setAutoRepeatInterval (int)来访问和设置autoRepeatDelay 属性。

2.1.8、autoExclusive属性

autoExclusive 属性保留是否启用按钮的自动排它特性,如果启用了,则属于同一父部件的可选中按钮任何时候只能选中一个按钮;选中另一个按钮将自动取消选中先前选中的按钮,这个功能与排他性按钮组的功能类似。

这个属性对属于按钮组的按钮没有影响。

默认情况下,除单选按钮外,其他按钮的autoExclusive 属性为禁用(False)状态。
可以使用autoExclusive()、setAutoExclusive(bool)访问和设置该属性。

三、pushButton按钮

3.1、简介

PushButton为一个常规的命令按钮,按钮,或者命令按钮,是图形用户界面中最常用的部件之一,需要父组件作为容器,能够在父组件中进行定位,用于接受用户点击执行命令或触发事件。典型的按钮有OK、Apply、Cancel、Close、Yes、No和Help等。

命令按钮是矩形的,通常带有描述其对应操作的文本标签,在文本内可以通过“与符号”(&)指定符号后面的字母为快捷键字符前,对应快捷键为:ALT+与符号后面字符。

PushButton对应的类为QPushButton。

3.2、pushButton属性

pushButton的属性除了从QAbstractButton继承的属性外,在Designer中还有三个属性。

3.2.1、default、atuoDefault属性
3.2.1.1、简介

default、atuoDefault这两个属性是关于窗口中按钮的缺省按钮设置的属性,这两个属性仅在父窗口为对话窗才生效,其他窗口类型设置这两个属性没有意义。

按钮的点击除了使用鼠标键之外,也可以使用回车键和空格键触发,default、atuoDefault这两个属性正是控制回车键和空格键按下时按钮的响应行为。

3.2.1.2、default属性

default属性用于指定对话窗中的按钮是否为默认按钮,如果按钮被设置为默认按钮,当按下回车键时,对话框的默认按钮将自动被按下。

default属性的默认值为False,可以通过isDefault()、setDefault(bool)来访问和设置按钮的default属性。

另外,官网上说默认按钮将显示一个附加的框架(取决于gui样式),可能是由于样式设置的问题,老猿没有验证到这点。

3.2.1.3、atuoDefault属性

atuoDefault属性确认按钮是否为自动默认按钮,如果此属性设置为True,则按钮是自动默认按钮。自动默认按钮在按钮获得焦点后,按下回车键时自动默认按钮将自动被按下。

在某些图形用户界面样式中,默认按钮的周围有一个额外的边框,最多3个像素或更多。

对于父窗口是QDialog 的按钮,此属性的默认值为True;否则默认值为False。

可以使用autoDefault() 、setAutoDefault(bool)来访问或设置按钮的atuoDefault属性。

3.2.1.4、回车键触发按钮按下时的按钮响应行为验证

经老猿验证对回车键按下时对话窗按钮的响应情况如下:
1、如果一个对话窗中有多个按钮的default被设置为True,则取决于生成的代码中哪个最后执行setDefault(True),后设置的覆盖前设置的,前面设置的自动将该属性置为False,但图形界面设置的属性值没有变化,即改变的是运行态;

2、如果对话窗中的多个按钮都没有获得焦点,且有个按钮设置了default为True,则回车键会触发该默认按钮按下的操作;

3、如果当前所有按钮都未获取到焦点,也无按钮设置default为True,经老猿验证回车键不会触发任何按钮(包括自动默认按钮)按下,但官网上说会触发焦点链中下一个自动默认按钮(原文:When the dialog has autoDefault buttons but no default button, pressing enter will press either the autoDefault button that currently has focus, or if no button has focus, the next autoDefault button in the focus chain.);

4、如果当前无按钮设置default为True,而获得了焦点的按钮无atuoDefault属性,即不是自动默认按钮,按回车键不会触发任何按钮按下;

5、图形界面设计的自动默认按钮在界面上设置atuoDefault为True时,应用启动后该按钮的Default也自动设置为True,因此此时无其他非自动默认按钮设置了default值为True时,回车键会触发自动默认按钮的按下。在此种情况下:

  • 如果有多个按钮在界面上设置atuoDefault为True时,响应的按钮只是其中一个,至于是哪个,老猿验证是最早设计的atuoDefault,但验证案例可能不全,因此结论不一定正确
  • 多个按钮在界面上设置atuoDefault为True时的情况,并不适合上面所说的第3点和第4点的情况,也并不完全适合第2点的情况,因为老猿验证在多个自动默认按钮存在的情况下,如果程序不改变按钮的default值,则所有自动默认按钮的default值都为True。
3.2.1.5、空格键触发按钮按下的按钮响应行为验证

经老猿验证空格键按下时对话窗按钮的响应情况如下:
1、如果有个按钮获得了焦点,则空格键始终触发该焦点按钮按下;
2、如果无按钮获得焦点,但有按钮设置了default属性值为True,则会触发default属性值为True的按钮按下;
3、如果无按钮获得焦点,也无按钮设置了default属性值为True,则会触发atuoDefault为True的自动默认按钮的按下;
4、如果无按钮获得焦点,也无按钮设置了default或atuoDefault属性值为True,则空格键无响应。

3.3、flat属性

flat属性用于确认按钮边框是否凸起,如果为False则凸起,如果为True则边框与背景是平坦的。

默认值为False,如果设置为True,则除非按下按钮,否则大多数样式都不会绘制按钮背景。通过使用setAutoFillBackground()可用于确保使用 QPalette.Button的画笔填充背景。

可以通过isFlat() 、setFlat(bool)来访问或设置该属性。

3.4、继承的重要常用属性

pushButton其他属性都是从QAbstractButton或QWidget继承,重要的属性包括name、font、text、icon、enabled、checkable、checked、autoRepeat、autoRepeatDelay、autoRepeatInterval。

3.5、pushButton的信号

pushButton的信号继承自QAbstractButton,常用信号包括如下三个:

  • pressed:从QAbstractButton继承,按下按钮时,发射该信号
  • clicked:从QAbstractButton继承,点击按钮时,发射该信号
  • released:从QAbstractButton继承,释放按钮时,发射该信号

一次鼠标点击过程中, 以上3个信号触发的顺序依次为:pressed、released、clicked。

四、RadioButton单选按钮

RadioButton是单选按钮,用于提供两个或多个互斥选项,直接父类为QAbstractButton类,在Designer中没有自己的单独属性。

4.1、继承的重要常用属性

RadioButton的属性都是从QAbstractButton或QWidget继承,重要的属性包括与PushButton相同的name、font、text、icon、enabled、checkable、checked、autoRepeat、autoRepeatDelay、autoRepeatInterval这些外,还有autoExclusive。具体属性请参见本文前面介绍。

4.2、继承的常用信号

  • pressed:从QAbstractButton继承,按下按钮时,发射该信号
  • clicked:从QAbstractButton继承,点击按钮时,发射该信号
  • released:从QAbstractButton继承,释放按钮时,发射该信号
  • toggled(bool checked):从QAbstractButton继承,每当可选中按钮更改其状态时,就会发出此信号。如果选中按钮,则checked为True;如果未选中按钮,则checked为False。

在一次鼠标点击过程中, 以上4个信号触发的顺序依次为:pressed、toggled、released、clicked。

四、CheckBox复选框

CheckBox复选框,继承自QAbstractButton,与RadioButton的区别是选择模式,单选框提供多选一,复选框提供多选多。复选框有三种状态:未选中、半选中和选中。

CheckBox的属性除了从QAbstractButton继承的属性外,在Designer中只有一个属性,就是tristate属性。

4.1 tristate属性

tristate属性表示复选框是三种状态还是两种状态,如果tristate为True,则表示复选框有选中、未选中和半选中三种状态,如果tristate为False,则表示复选框只有选中、未选中两种状态。

复选框的ischecked()方法在选中和半选中状态下都返回True。半选中状态一般用于复选框对应选择内容包含多个,例如Excel刷选数据时,全选是选择所有数据,未选择则是一条数据也没有,在二者之间的状态为半选中状态。

tristate属性缺省为False,可以通过isTristate()、setTristate(bool y = true)进行读取和设置。

4.2、继承的重要常用属性

CheckBox的继承属性都是从QAbstractButton或QWidget继承,重要的继承属性与PushButton相同,包括name、font、text、icon、enabled、checkable、checked、autoRepeat、autoRepeatDelay、autoRepeatInterval。

4.3、CheckBox的信号

CheckBox的信号一类是从父类继承的,与RadioButton继承的信号相同。另一类信号是CheckBox自身的信号,这类信号只有一个stateChanged信号。

stateChanged信号

stateChanged信号是CheckBox自身提供的信号,该信号在复选框状态发生改变时触发,带一个整型参数state,这个参数为枚举类型Qt.CheckState,包括未选中、半选中和选中三种状态值。
对应类型的常量、值、含义如下:

  • Qt.Unchecked:值为0,表示未选中
  • Qt.PartiallyChecked:值为1,表示半选中
  • Qt.Checked:值为2,表示选中。

五、toolButton工具按钮

toolButton工具按钮对应类为QToolButton,是一种用于命令或者选项的可以快速访问的按钮,通常在ToolBar里面。工具按钮通常显示的是图标,而不是文本标签。ToolButton支持自动浮起。在自动浮起(autoRaise)模式中,按钮只有在鼠标指向它的时候才绘制三维的框架。

toolButton除了从父类继承的属性之外,在Designer中能设置的自带属性有popupMode(弹出菜单显示模式)、toolButtonStyle(按钮样式)、autoRaise(自动浮起)、arrowType(箭头类型)四个属性。

5.1、popupMode属性

5.1.1、属性介绍

toolButton的popupMode属性为设有菜单集或Action列表的toolButton指定菜单弹出模式,类型为枚举类型ToolButtonPopupMode,有如下三种模式:

  • DelayedPopup(值为0):按住toolButton一定时间(超时取决于样式,请参见QStyle.SH_ToolButton_PopupDelay)后,将显示菜单。典型的应用程序示例是一些web浏览器工具栏中的“后退”按钮。如果用户单击它,浏览器只需浏览回上一页。如果用户按下并按住按钮一段时间,工具按钮将显示包含当前历史列表的菜单;
  • MenuButtonPopup(值为1):在此模式下,toolButton显示一个特殊箭头,指示有弹出菜单存在。当按下toolButton上的箭头一部分时,将弹出菜单;
  • InstantPopup(值为2):按下toolButton时,立即显示弹出菜单。toolButton自己对应的Action不会触发。

缺省类型为DelayedPopup,可以通过popupMode()、setPopupMode(ToolButtonPopupMode mode)来读取和设置该属性。

5.1.2、案例
5.1.2.1、案例说明

在一个mainWindow中,设置了个system菜单,system菜单包含Quit和About两个菜单项以及工具栏,对应动作分别为actionQuit和actionAbout。在窗口中部署了个toolButton按钮,界面信息如下:
在这里插入图片描述
Quit菜单对应动作为关闭窗口,与系统槽函数close()关联,About菜单对应动作为显示一个提示信息,与自定义槽函数about()关联。

该界面对应的派生类定义如下:

class Ui_mainWindowWin(QtWidgets.QMainWindow,mainWinTest.Ui_MainWindow):
    def __init__(self):
        super(Ui_mainWindowWin, self).__init__()
        self.setupUi(self)
        self.toolButton.setDefaultAction(self.actionAbout) #将toolButton的点击与actionAbout关联
        self.toolButton.setMenu(self.menusystem) #将窗口菜单同时设置为toolButton的弹出菜单

    def about(self):
        print("In about")
        QMessageBox.information(self,'About','This is a toolButton test!',QMessageBox.Ok        
5.1.2.2、案例1:将弹出模式设置为DelayedPopup

对应toolButton设置信息如下:
在这里插入图片描述
运行后初始界面如下:
在这里插入图片描述
可以看到直接点击toolButton并立即释放按钮会显示About信息,如下:
在这里插入图片描述
但当点击后不立即释放后弹出了菜单,如图:
在这里插入图片描述

5.1.2.3、案例2:将弹出模式设置为MenuButtonPopup

对应toolButton设置信息如下:

在这里插入图片描述
运行后初始界面如下:
在这里插入图片描述
点击上图中按钮非右边朝下箭头部分显示About信息,如图:
在这里插入图片描述
点击图中按钮右边朝下箭头部分则弹出菜单,如图:
在这里插入图片描述

5.1.2.4、案例3:将弹出模式设置为InstantPopup

对应toolButton设置信息如下:
在这里插入图片描述
初始运行界面如下:
在这里插入图片描述
点击toolButton的任何部分都显示弹出菜单,如图:
在这里插入图片描述

5.2、toolButtonStyle属性

oolButtonStyle属性用于确认toolButton按钮显示文字、图标的方式,其类型为枚举类型 Qt.ToolButtonStyle,有如下值:

ToolButtonIconOnly(值为0):仅显示图标
ToolButtonTextOnly(值为1):仅显示文字
ToolButtonTextBesideIcon(值为2):文字和图标都显示,文字显示在图标右边
ToolButtonTextUnderIcon(值为3):文字和图标都显示,文字显示在图标下面
ToolButtonFollowStyle(值为4):按Qt样式显示,Qt样式为枚举类型 QStyle.StyleHint

缺省值为ToolButtonIconOnly,可以通过toolButtonStyle()、setToolButtonStyle(Qt.ToolButtonStyle style)来读取和设置该属性。

5.3、autoRaise属性

autoRaise属性表示toolButton按钮是否自动凸出,类型为布尔类型。默认值为False,可以通过autoRaise()、setAutoRaise(bool enable)来读取和设置。

如果 autoRaise为False,则toolButton初始状态为与界面齐平,看起来没有按钮一样,如图:
在这里插入图片描述
上图中黄色荧光笔标记部分为一个toolButton,设置autoRaise为True时初始状态看不出来这是个按钮,但当鼠标移动到期范围之内时,按钮会自动凸显。如图:
在这里插入图片描述

5.4、arrowType属性

rrowType属性用于控制在toolButton上是否和怎样显示一个箭头,上图中是有个向上的箭头,其类型为枚举类型Qt.ArrowType,有如下取值:
NoArrow(值为0):不显示箭头
UpArrow(值为1):显示向上箭头
DownArrow(值为2):显示向下箭头
LeftArrow(值为3):显示向左箭头
RightArrow(值为4):显示向右箭头

缺省值为NoArrow,可以通过arrowType()、setArrowType(Qt.ArrowType type)来读取和设置。

5.5、toolButton继承的属性

toolButton的继承属性都是从QAbstractButton或QWidget继承,重要的继承属性与PushButton相同,包括name、font、text、icon、enabled、checkable、checked、autoRepeat、autoRepeatDelay、autoRepeatInterval。

5.6、toolButton的信号

toolButton的信号一类是从父类继承的,与RadioButton继承的信号相同。另一类信号是CheckBox自身的信号,这类信号只有一个stateChanged信号。

六、CommandLinkButton命令链接按钮

CommandLinkButton命令链接按钮,继承自QPushButton,是Windows Vista引入的新控件,它设计的用途与单选按钮类似,用于在一组互斥选项之间进行选择。命令链接按钮不应单独使用,而应作为向导和对话框中单选按钮的替代,并替代常用的导航式的“下一步”按钮。

其外观通常类似于平面按钮,但除了普通按钮文本外,还允许使用描述性文本。默认情况下,它还会带有一个向右的箭头图标,表示按下该控件将打开另一个窗口或页面。

6.1、CommandLinkButton的属性

Qt Designer中,CommandLinkButton的属性主要来源于继承的父类,包括QWidget、QAbstractButton、QPushButton,相关的属性与QPushButton基本相同,只是比PushButton多了个自己的description属性,这个属性在按钮上显示为第二行文本。

6.2、与pushButton的关系

CommandLinkButton对应类为QCommandLinkButton,实际上是从pushButton继承过来的一种按钮, 外观像是一个被设置了扁平化的 QPushButton,与PushButton不同主要有如下:

  • CommandLinkButton可以在按钮上显示双行文本,首行是QAbstractButton的text显示,次行类似于副标题,是通过CommandLinkButton的description属性来设置的
  • 默认情况下,CommandLinkButton还会带有一个向右的箭头图标,该图标实际上就是QAbstractButton的ICon设置图标,只是填了一个右箭头作为缺省值
  • CommandLinkButton默认类似于一个扁平化自动凸起的按钮

6.3、CommandLinkButton的界面状态案例

初始状态的commandLinkButton案例:
在这里插入图片描述
鼠标进入commandLinkButton之后的状态:
在这里插入图片描述

6.4、commandLinkButton的信号

commandLinkButton的信号与pushButton相同,在此不再单独赘述。

七、dialogButtonBox按钮盒

dialogButtonBox按钮盒是Qt提供的可以快速地布置一组按钮的组件,Qt在按钮盒内定义了一系列标准按钮,可以通过在Designer中简单勾选就可以在界面上部署一组按钮。

dialogButtonBox的对应类是QDialogButtonBox,该类是从QWidget类继承的,也是Buttons部件中唯一不从QAbstractButton继承的组件,老猿认为这是因为dialogButtonBox是一组按钮的容器,本身并不是按钮。

dialogButtonBox有三个属性:orientation、standardButtons、centerButtons,分别表示按钮盒部署的方向、按钮盒包含的标准按钮、以及按钮盒中的按钮居中对齐。

7.1、orientation属性

orientation属性表示QDialogButtonBox的方向,缺省情况下,方向为水平方向(值为Qt.Horizontal),表示QDialogButtonBox中的按钮成水平排列,可以调整为垂直方向(值为Qt.Vertical),表示QDialogButtonBox中的按钮成垂直排列。

可以通过方法orientation()、setOrientation(Qt.Orientation orientation)读取和设置该属性。

7.2、centerButtons属性

centerButtons属性表示QDialogButtonBox的按钮是否居中排列,默认情况下,此属性为False。这种行为对于大多数类型的对话框都是合适的。但有一个显著的例外是大多数平台(如Windows)上的消息框,其中按钮是水平居中。

可以通过方法centerButtons()、setCenterButtons(bool center)读取和设置该属性。

7.3、standardButtons属性

在Qt Designer中,可以在界面中使用QDialogButtonBox的standardButtons属性来配置一组按钮进行操作。Qt中为QDialogButtonBox定义了一组常用的标准按钮,可以在Designer中直接在StandardButtons属性中指定使用,配置界面如图:
在这里插入图片描述
StandardButtons标准按钮属性与枚举类型QDialogButtonBox.StandardButton类型相对应,具体取值及含义如下:
在这里插入图片描述

7.4、ButtonRole

在Designer中创建的QDialogButtonBox对应的Button,都有指定的ButtonRole,而我们创建自定义的Button加入到QDialogButtonBox中去时,也需要设定该按钮的ButtonRole。

7.4.1、ButtonRole理解

ButtonRole的作用在Qt文档中没有明确说明,老猿分析,ButtonRole主要有如下三个作用:

  • 同一种ButtonRole的角色,界面风格相同,同一种ButtonRole的按钮在排列时应该依次连续排列
  • 同一种ButtonRole的角色所能发送的信号相同
  • 给自定义Button加入QDialogButtonBox时进行初始化以简单快捷实现。
7.4.2、ButtonRole取值及含义

ButtonRole的类型为枚举类QDialogButtonBox.ButtonRole,相关取值及含义如下:
在这里插入图片描述

7.4.3、ButtonRole与StandardButton标准按钮对应关系

下面为Qt提供的标准按钮的ButtonRole与StandardButton标准按钮对应关系,前面为ButtonRole,后面为对应的标准按钮列表:
1、AcceptRole:Ignore、Ok、Open、Retry、Save、SaveAll、Apply;
2、DestructiveRole:Discard;
3、HelpRole:Help;
4、NoRole:No、NoToAll;
5、RejectRole:Cancel、Close、Abort;
6、ResetRole:Reset、RestoreDefaults;
7、YesRole:Yes、YesToAll。

除了以上ButtonRole之外,ButtonRole中还有一个ActionRole,在标准按钮中没有对应的按钮。

7.5、dialogButtonBox的信号

dialogButtonBox的信号虽然有继承自父类的信号,但最重要的信号还是自身实现的4个信号:accepted()、helpRequested()、rejected()、clicked(QAbstractButton *button)。

7.5.1、accepted()信号

accepted信号,是按钮盒中使用AcceptRole 或 YesRole定义的按钮在点击后发射的信号。

7.5.2、helpRequested()信号

helpRequested()信号,是按钮盒中使用HelpRole定义的按钮在点击后发射的信号。

7.5.3、rejected()信号

rejected()信号是按钮盒中使用RejectRole 或 NoRole定义的按钮在点击后发射的信号。

7.5.4、clicked(QAbstractButton *button)信号

clicked信号是按钮盒中任何按钮被点击后发送的信号,这个地方的参数是从C语言带过来的指针类型,在Python中无指针类型,实际在映射到的槽函数中,该参数就是一个QAbstractButton 的对象,代表具体被点击的按钮。虽然参数中给出了具体点击按钮,但对应按钮是哪个角色的按钮、该怎样进行响应需要应用再进行判断,在《PyQt(Python+Qt)学习随笔:Designer中QDialogButtonBox确认clicked信号是哪个按钮发送的方法》介绍了识别点击按钮角色的方法,在此不详细介绍。

八、总结

本节详细介绍了Qt Designer中的Buttons类的按钮组件,包括相关部件的属性和信号,老猿对其中一些难以快速理解的内容进行了深入阐述和分析,这些内容有助于大家理解Buttons组件的功能和使用方法。

老猿Python,跟老猿学Python!

博文目录

博客地址

PyQt Designer入门指南:可视化GUI开发与Python桌面应用实战 图形用户界面(GUI)开发是桌面应用构建的核心环节,其原理在于通过控件库和布局管理器实现用户交互的可视化。在Python生态中,PyQt作为成熟的GUI框架,结合其可视化设计工具PyQt Designer,能显著提升开发效率。PyQt Designer采用拖拽式界面设计,自动生成UI描述文件,开发者可专注于业务逻辑实现,这一技术价值在于降低GUI开发门槛并加速原型迭代。其应用场景广泛,涵盖数据工具、办公自动化及小型桌面软件等。本文以PyQt Designer为切入点,详解环境搭建、控件拖拽、信号槽机制及项目 阅读详情

相关推荐

Python PyQt5 系列教程(5):控件介绍(总)

本章按照 Qt Designer 控件箱排列顺序介绍: Layouts 布局 控件名称 控件说明 Vertical Layout 垂直布局 Horizontal 水平布局 Grid Layout 网格布局 Form Layout 表单布局 Containers 容器 控件名称 控件说明 Group Box 组合框 Srcroll Area 滚动条...

MeteorBZ的博客 2488

Pyqt - Button

Listening 繁华的寂静! 来小例子: 点击AA,BB按钮后会弹出文件选择框,点击Show按钮后会弹出文本输入框,输入后点击确认,然后你输入的东东显示在右侧的显示框框。 Show me the code: -- ui框架的力量啊: import sys import os from PyQt5.QtWidgets import ( QWidget, QMainWindow, QPushButton, QLineEdit, QInputDialog, QApplicatio...

Peace 646

Windows下PyQt5安装全攻略:从环境诊断到实战开发

Python GUI开发中,PyQt5作为Qt框架的Python绑定,是构建桌面应用的重要工具。其核心原理是通过预编译包将C++编写的Qt库与Python代码结合,实现跨平台界面开发。这一技术价值在于提供了功能完整、性能优异的GUI解决方案,广泛应用于数据分析可视化、工业控制软件、科学计算工具等场景。然而在Windows环境下,版本兼容性和依赖完整性常导致安装失败,特别是DLL加载错误问题。本文聚焦PyQt5安装的常见痛点,深入解析环境配置、pip与conda安装方案对比,以及通过Qt Designer工具

weixin_30321449的博客 443

PyQt按钮控件(总篇)

QAbstractButton(按钮基类)、普通按钮(QPushButton)、链接按钮(QCommandLinkButton)、单选按钮(QRadioButton)、复选框按钮(QCheckBox)、工具按钮(QToolButton)、QButtonGroup、QCheckBox

m0_60633107的博客 3888

PyQt5与PyCharm环境配置全攻略:从安装到可视化界面开发

在众多桌面应用开发方案中,Qt框架凭借丰富的控件库与跨平台能力,成为构建专业GUI的常见选择,而PyQt5作为其Python绑定,为开发者提供了高效的可视化设计工具。要顺利完成环境搭建,需理清Python虚拟环境、pip包管理及外部工具链之间的协作关系。通过合理配置国内镜像源,可显著加快安装速度;借助PyCharm集成Qt Designer与PyUIC,能大幅简化界面设计与代码转换流程。这一工作流不仅适用于学生课程设计,也覆盖中小型工具软件、数据可视化面板等常见场景。从安装、验证到报错排查,全面掌握这套配置

weixin_34159110的博客 458

小白白也能学会的 PyQt 教程 —— QPushButton 基本使用

QPushButton是是 PyQt 中用于创建按钮的类。它直接继承自 QAbstractButton类,间接继承自 QWidget 类,因此可以像其他窗口部件一样进行布局和管理。作为常用的小部件之一,QPushButton可用于添加交互性并为用户提供操作按钮。它具有丰富的功能和属性,可以显示文本标签或图标,支持信号与槽机制,允许分配快捷键,并可通过样式表进行自定义外观。通过使用QPushButton,开发人员可以轻松地在Qt应用程序中添加按钮并实现自定义的外观和行为,从而为用户提供更好的界面体验。

繁依Fanyi的博客 6735

python qtdesigner图标按键_第15.14节 PyQt(Python+Qt)入门学习:Designer的Buttons按钮详解...

一、引言Qt Designer中的Buttons部件包括Push Button(常规按钮、一般称按钮)、Tool Button(工具按钮)、Radio Button(单选按钮)、Check Box(复选框)、Command Link Button(命令链接按钮)和Dialog Button Box(对话框按钮盒)六种类型,这六种类型的Buttons部件,都是QWidget的直接或间接子类,同时除了...

weixin_39588445的博客 1716

Qt Designer中的交互控件:按钮、菜单项和属性编辑

Qt Designer是Qt应用程序开发中的一个强大工具,它允许开发人员以可视化方式设计图形用户界面(GUI)。在GUI设计过程中,我们通常需要添加各种交互控件,如按钮、菜单项等,以实现用户与应用程序的交互。本文将介绍如何在Qt Designer中添加和配置这些交互控件,并在Python中使用它们。Qt Designer是Qt框架的一部分,用于创建和编辑Qt界面文件(.ui文件)。这些界面文件可以与Qt应用程序代码一起使用,通过Qt的库来加载和显示界面,从而实现用户界面的设计与逻辑分离。

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 1138

PyQt Designer入门:可视化GUI设计与Python桌面应用开发实战

图形用户界面(GUI)开发是软件工程中的重要领域,它通过可视化组件实现人机交互。其核心原理在于事件驱动编程模型,即用户操作触发事件,程序通过信号与槽机制响应。这项技术的价值在于将界面逻辑与业务逻辑分离,大幅提升开发效率和可维护性。在应用场景上,GUI工具广泛应用于数据分析可视化、自动化脚本封装、内部工具开发等领域。PyQt Designer作为PyQt5的官方界面设计器,正是实现这一目标的利器。它采用拖拽式操作,支持布局管理器和样式表(QSS),能快速生成.ui文件,并通过pyuic5工具与Python代码

weixin_34320724的博客 335

在Python中使用Qt Designer设计GUI界面时,我们经常需要向工具栏(ToolBar)添加按钮(Button)

在以上代码中,我们首先创建了一个MainWindow类,该类继承自QMainWindow,并实现了initUI()方法来创建工具栏和按钮等控件。在initUI()方法中,我们创建了工具栏并使用addToolBar()方法将其添加到主窗口中。我们将这两个动作分别添加到了工具栏中,并设置了它们的图标、提示信息等属性。到这里,我们已经完成了在Qt Designer中向工具栏添加按钮并使用Python实现对其操作的全部步骤。首先,我们需要在Qt Designer中创建一个工具栏并添加按钮。

m0_47037246的博客 3186

Py之GUI之PyQt:基于Qt DesignerGUI界面编程简介(包括各个控件详解及其基础使用方法)图文教程之详细攻略

​ Py之GUI之PyQt:基于Qt DesignerGUI界面编程简介(包括各个控件详解及其基础使用方法)图文教程之详细攻略 目录 基础控件介绍 QtDesigner界面—Widget Box窗口提供了各种控件 Object Inspector 窗口查看当前所有控件对象 Property Editor属性编辑器窗口 Signal/Slot Editor信号/槽编辑器窗口 Resource Browser资源浏览器窗口 动作编辑器窗口 相关文章 Qt

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3146

PyQt-Frameless-Window 主窗口与对话框实战:FramelessMainWindow 和 FramelessDialog 使用指南

想要打造一款颜值在线、风格统一的 PyQt 桌面应用,无边框窗口几乎是绕不开的一环。PyQt-Frameless-Window 正是为此而生的跨平台无边框窗口库,它基于 PyQt/PySide,支持 Win32、Linux 与 macOS。本文将以实战为主线,手把手带你掌握其中两个最核心的类——`FramelessMainWindow` 主窗口与 `FramelessDialog` 对话框的完整用

gitblog_00024的博客 451

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 716

PyQt-Frameless-Window 实战:从零构建现代化无边框桌面应用

本文详细介绍了如何使用PyQt-Frameless-Window库从零构建现代化无边框桌面应用。通过实战教程,包括环境搭建、核心功能实现和高级技巧,帮助开发者掌握无边框窗口的定制与优化,打造媲美原生应用的视觉效果和用户体验。

weixin_30325971的博客 385

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4727

鸿蒙开发实战项目(九十二):HUAWEI Health血压测量

是华为开发的用于运动健康领域的一个开放平台, 三方APP可以借助HUAWEI Health开放平台提供的。

斌擎科技 1133

高 DPI 适配完整指南:让 PyQt-Frameless-Window 界面在 4K 屏上完美呈现

在 4K 高分屏上运行桌面应用,最让人头疼的莫过于文字发虚、界面模糊、按钮变形——这背后的核心问题就是**高 DPI 适配**。作为一款跨平台的无边框窗口库,**PyQt-Frameless-Window** 对高 DPI 缩放有着非常完善的内置支持,无论你的应用运行在 Win32、Linux 还是 macOS 上,它都能让窗口在 4K 屏上保持锐利清晰。这篇完整指南将带你从零理解 DPI 缩放的

gitblog_00592的博客 879

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

丨汀、的博客 4万+

PyQt-Frameless-Window 自定义标题栏完全指南:从 TitleBar 到 StandardTitleBar

想要用 PyQt5 做出像 Spotify、VS Code 那样干净漂亮的"无边框窗口",却总被系统默认标题栏拖后腿?**PyQt-Frameless-Window** 就是为这个痛点而生的跨平台开源库,它基于 PyQt/PySide,完整支持 Win32、Linux 和 macOS,自带了移动窗口、边缘拉伸、窗口阴影、窗口动画以及 Win11 Snap Layout、Win10/11 亚克力与

gitblog_00466的博客 265

SAP 系统和银行系统通过 SM2 加密算法进行集成

SM2 是基于椭圆曲线离散对数问题(ECDLP)的一种公钥密码算法。椭圆曲线加密的核心原理,是利用了一个数学难题:在椭圆曲线群上,已知曲线上两点的运算结果,逆向推导出这两个点的具体信息是非常困难的。这样的复杂度使得基于椭圆曲线的密码体制比传统的 RSA 更加难以破解。在 SM2 加密中,公钥和私钥的生成与传统的椭圆曲线加密类似。选择一个椭圆曲线和一个基点 P。使用私钥 d,计算公钥 P’ = d * P。私钥 d 保密,而公钥 P’ 可公开分发,用于加密数据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1212

粒子群优化与蚁群算法求解多旅行商问题

它要求在给定一组城市和旅行商之间的距离矩阵的情况下,找到一条最优的路径方案,使得所有旅行商可以分别从起始城市出发,途径其他城市,并最终回到起始城市,同时总旅行距离达到最小。这两种算法都是基于群体智能的优化算法,在求解组合优化问题时具有较好的性能表现。假设有n个城市需要被m个旅行商访问,城市间的距离由距离矩阵D表示,其中D(i,j)表示第i个城市到第j个城市的距离。粒子群优化算法是一种基于群体智能的优化算法,其中的粒子代表了潜在的解,并通过模拟粒子在解空间中的移动来搜索最优解。一、多旅行商问题建模。

m0_47037246的博客 553

PyQt6实现桌面窗口化:无边框可拖动界面与动画效果实战

在GUI开发中,无边框窗口和属性动画是构建现代交互界面的关键技术。无边框窗口通过移除系统默认标题栏和边框,为自定义界面设计提供了基础,而属性动画则能平滑过渡窗口的位置、大小和透明度等视觉属性。这些技术组合起来,能够显著提升应用的专业感和用户体验,尤其适用于需要灵活交互的桌面应用场景。本文以PyQt6框架为例,深入解析如何利用FramelessWindowHint和QPropertyAnimation等核心特性,实现一个可自由拖动、带动画效果的桌面时钟应用,为开发悬浮窗、仪表盘等桌面工具提供了一套完整的工程实

weixin_30905133的博客 355

Linux系列:SecurtCRT中的密码如何找回

【代码】Linux系列:SecurtCRT中的密码如何找回。

NIO4444 1086
上一篇: PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的orientation和centerButtons属性
下一篇: PyQt(Python+Qt)学习随笔:Qt Designer中Action创建的方法
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值