一、引言

QDialogButtonBox本身只提供4种信号,分别是accepted、rejected、clicked和helpRequested,在《PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的accepted、rejected和helpRequested信号》介绍了这些按钮中有部分会产生相同的accepted或rejected信号,有部分不会产生accepted或rejected信号,那么怎么确认点击了按钮只能通过clicked信号。

在《PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的clicked信号参数QAbstractButton *解决办法》介绍了怎么建立QDialogButtonBox的clicked信号与槽函数的连接的方法,并介绍该信号对应槽函数的参数button就是一个QPushButton类型的按钮,可以通过button.text()判断点击的按钮,实际上除了使用button.text()这种方法来识别点击按钮之外,还有一种QDialogButtonBox提供的方法来判断点击的按钮的方法,这个方法就是通过QDialogButtonBox.button()方法。

二、通过两种方法确认点击button的实现

下面代码为QDialogButtonBox的clicked信号连接的槽函数代码:

 def buttonBoxClicked(self,button):
standButtonId = [QDialogButtonBox.Ok, QDialogButtonBox.Open, QDialogButtonBox.Save, QDialogButtonBox.Cancel,
QDialogButtonBox.Close, QDialogButtonBox.Discard, QDialogButtonBox.Apply,
QDialogButtonBox.Reset, QDialogButtonBox.RestoreDefaults, QDialogButtonBox.Help,
QDialogButtonBox.SaveAll, QDialogButtonBox.Yes, QDialogButtonBox.YesToAll, QDialogButtonBox.No,
QDialogButtonBox.NoToAll, QDialogButtonBox.Abort, QDialogButtonBox.Retry,
QDialogButtonBox.Ignore]
standButtonIdName = ["QDialogButtonBox.Ok","QDialogButtonBox.Open","QDialogButtonBox.Save","QDialogButtonBox.Cancel","QDialogButtonBox.Close","QDialogButtonBox.Discard","QDialogButtonBox.Apply","QDialogButtonBox.Reset","QDialogButtonBox.RestoreDefaults","QDialogButtonBox.Help","QDialogButtonBox.SaveAll","QDialogButtonBox.Yes","QDialogButtonBox.YesToAll","QDialogButtonBox.No","QDialogButtonBox.NoToAll","QDialogButtonBox.Abort","QDialogButtonBox.Retry","QDialogButtonBox.Ignore"]
standButtonName = ["OK", "Open", "Save", "Cancel", "Close", "Discard", "Apply", "Reset", "Restore Defaults",
"Help", "Save All", "&Yes", "Yes to &All", "&No", "N&o to All", "Abort", "Retry", "Ignore"]
#注意standButtonName中部分含有快捷键的定义,快捷键由“ALT+字母” 组成,字母为上述名字中有&符号后面的字母。 #通过按钮名字btnName找按钮的buttonID
btnName = button.text()
try:index = standButtonName.index(btnName)
except Exception as e:
index = -1
print(f"Not found buttonName:{btnName}")
else:
print(f"通过按钮名字{btnName}找到的buttonID:{standButtonIdName[index]}") # 通过按钮对象确认点击按钮的buttonID
found = False
index = -1
for btnid in standButtonId:
index += 1
btn = self.buttonBox.button(btnid) #buttonBox为QDialogButtonBox的实例对象
if btn == button:
found = True
break
if found:
print(f"通过按钮对象确认点击按钮为:{standButtonIdName[index]}")

老猿Python,跟老猿学Python!

博文目录

博客地址

PyQt(Python+Qt)学习随笔:Designer中QDialogButtonBox确认clicked信号是哪个按钮发送的方法的更多相关文章

  1. PyQt(Python+Qt)学习随笔:QAbstractItemView的selectionMode属性

    老猿Python博文目录 老猿Python博客地址 一.概述 selectionMode属性用于控制view中操作选择数据项的模式,用于控制用户是否可以选择一个或多个数据项,以及在多个数据项选择中,选 ...

  2. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的按钮改变缺省文字的方法

    在Qt Designer中可以预先定义标准按钮,相关支持的标准按钮请见<PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButton ...

  3. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox增加自定义按钮的方法

    在Qt Designer中可以预先定义标准按钮,相关支持的标准按钮请见<PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButton ...

  4. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButtons标准按钮

    在Qt Designer中,可以在界面中使用QDialogButtonBox来配置一组按钮进行操作,Qt中为QDialogButtonBox定义了一组常用的标准按钮,可以在Designer中直接在St ...

  5. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的clicked信号参数QAbstractButton *解决办法

    一.引言 QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpRequested,在<PyQt(Python+Qt)学习随笔:D ...

  6. PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性

    autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...

  7. PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性

    accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性

    toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中窗口对象的windowFilePath属性

    windowFilePath属性仅对窗口对象有效,用于关联一个窗口和对应的文件及路径. 当窗口没有设置标题属性的情况下,则窗口标题展示展示windowFilePath对应的文件名的信息(路径信息不展示 ...

随机推荐

  1. 5 MVVM

    1.概述 MVVM各个部分功能如下: Model:定义业务逻辑 View:定义面向用户接口,UI逻辑,处理用户交互请求 ViewModel:负责界面导航逻辑和应用状态管理,呈现逻辑. 1.1. 各司其 ...

  2. C的输入&输出

    格式说明符 输出 %d整型输出,%ld长整型输出, %o以八进制数形式输出整数, %x以十六进制数形式输出整数,或输出字符串的地址. %u以十进制数输出unsigned型数据(无符号数).注意:%d与 ...

  3. 用DOM和DOM4J写xml文件时,怎样设置xml文档的编码

    //在将xml文档传输出去时,利用Transformer中的setOutputProperty方法 TransformerFactory trans = TransformerFactory.newI ...

  4. 《我想进大厂》之Java基础夺命连环16问

    说好了面试系列已经完结了,结果发现还是真香,嗯,以为我发现我的Java基础都没写,所以这个就算作续集了,续集第一篇请各位收好. 说说进程和线程的区别? 进程是程序的一次执行,是系统进行资源分配和调度的 ...

  5. linux文件cat/tac/more/less/head/tail/find/vimdiff

    ls查看目录文件里的文件: [root@localhost test]# ls a  aa  b  c -d选项查看目录文件自身信息: [root@localhost test]# ll -d drw ...

  6. git-新建git用户流程-1

    1.输入:https://git-scm.com/ 2.点击try git 4.注册git填写用户名和密码,邮箱,验证邮箱 5.选择免费的版本 6.创建仓库名称 创建成功见截图

  7. 在iOS 4中创建一个LDGradientView样式的渐变视图

    本教程将演示如何在 Swift 4 中创建一个多功能的.@IBDesignable 样式的渐变视图类.你可以将 CAGradientView 放到 storyboard 中,并在设计时预览,或者以编程 ...

  8. python-验证码图片识别

    import tesserocr from PIL import Image #新建Image对象 image = Image.open('code.png') #调用tesserocr的image_ ...

  9. java面试官最爱问的垃圾回收机制,这位阿里P7大佬分析的属实到位

    前言 JVM 内存模型一共包括三个部分: 堆 ( Java代码可及的 Java堆 和 JVM自身使用的方法区). 栈 ( 服务Java方法的虚拟机栈 和 服务Native方法的本地方法栈 ) 保证程序 ...

  10. 「LOJ #6500」「雅礼集训 2018 Day2」操作

    description LOJ 6500 solution 根据常有套路,容易想到将区间差分转化为异或数组上的单点修改,即令\(b_i=a_i \ xor\ a_{i-1}\), 那么将\([l,l+ ...