【发布时间】:2015-08-18 14:41:27
【问题描述】:
我正在尝试获取有关在 PySide 中单击按钮的次数的统计信息。
数据存储在字典中,我希望键是被点击的函数名称:
示例:{"myAwesomeFunc" : 15, "anotherFunc" : 4}
我首先将包含数百个按钮的现有 (Autodesk) Maya-UI 转换为 QObject。
然后,我使用 findChildren(QPushButton) 方法列出所有按钮,并使用btn.clicked.connect(getStat) 将我自己的getStats() 函数连接到每个按钮。
这样做后,按钮将在单击时执行两个函数,一个来自 UI 的原始函数,另一个是我的 stat 函数,它将增加字典。
那么,我卡住的地方是如何查询与按钮的“单击”方法关联的原始函数名称?
例子:
def myAwesomeFunc():
return
btn = QtGui.QPushButton()
btn.clicked.connect(myAwesomeFunc)
然后,我正在寻找的是这样的:
funcList = btn.clicked.getFunctions()
myFunc = funcList[0]
print myFunc.__name__
result : "myAwesomeFunc"
【问题讨论】:
-
至少在 C++/Qt 中是不可能的,但这也意味着程序架构有问题,所以告诉我们你试图实现什么。也许还有另一种解决方案。也是你(程序员)建立连接,所以如果你需要的话,你可以手动将它添加到一些列表或字典中,因为没有内置的方法来实现这一点。
-
我已经用我想要做的事情更新了这个问题。让我知道它是否没有意义!
-
嗯,你说:
how many time a button was clicked和I'd like the KEY to be the CLICKED-FUNCTION,为什么不是指向按钮的指针(按钮本身)? -
"我希望 KEY 是 CLICKED-FUNCTION *NAME" 所以,当创建 UI 时,如果有人在其中使用功能 " extractNames()”,然后,我希望密钥是“extractNames”。 UI 可以随时更改,因为它被几个可以随时添加按钮的人使用。指向按钮的指针是什么意思。当 findChildren() 方法列出按钮时,我已经有了按钮? (对不起,我的 Qt 技能非常有限,因为我最近才开始......)
-
我只是想在 C++ 中所以我使用了单词
pointer,在 python 中它只是一个按钮。根据这个答案:stackoverflow.com/questions/2755694/… 正如我之前所说,没有办法做到这一点。据我了解,您需要收集并显示统计信息(单击了多少次按钮,而不是调用了多少次插槽),因此我认为您的 findChildren() 和 getStats 是正确的方法,您需要使用 { QPushButton:15,“另一个QPushButton”:4}
标签: python qt pyqt pyside qpushbutton