PyQt(Python+Qt)学习随笔:Designer中QDialogButtonBox确认clicked信号是哪个按钮发送的方法
2023-09-27 14:26:58 时间
一、引言
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!
博文目录
博客地址
相关文章
- PySide6 : Qt for Python 教程
- 零基础如何开始学习 Python?看完这篇从小白变大牛!
- Python创意编程活动获奖名单公布啦!!
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- python不起眼的知识点
- 为什么我觉得Python烂的要死?
- 《树莓派Python编程入门与实战》——1.8 总结
- python 关键词
- 为 Python 和数据工程师提供 FPGA 功能的 PYNQ 项目概述
- 《Python硬件编程实战》——1.3 Python的特点
- 基于Python的卷积神经网络(CNN)识别MNIST数据集
- Error occurred while running `from pyglet.gl import *`HINT: make sure you have OpenGL install. On Ubuntu, you can run 'apt-get install python-opengl'.
- Python实现pdf的一些功能
- python中filter函数
- 【python百度智能云】:百度CFC函数调用 — python zip打包
- 【python】 字符串“-d aaa -i 10.xx.xxx.xx -p io“ 替换-i之后的字符串, 新思路
- [Python]跟着代码去学习---二维码1:批量生成二维码
- [Python]迭代器生成器 随手记
- Python读取txt文件时第一行出现 ufeff 这个字符