我已经将菜单栏QAction
设置为可检查
self.display_features_action = QtGui.QAction("Show Features", parent)
self.display_features_action.setCheckable(True)
self.display_features_action.setChecked(True)
然后我连接到这个
class MyClass:
def __init__(....)
....
self.display_features_action.triggered.connect(self.my_slot)
def my_slot(self, checked)
....
但是,当仅提供一个时,我会遇到my_slot方法将其引入参数的运行时错误。为什么不将检查的参数与信号一起发送?
在PySide中,默认参数(例如triggered
和clicked
)对信号的处理似乎与PyQt中的不同。前者不允许在接收槽中放置任何位置参数,但后者会愉快地丢弃未使用的参数而不会产生投诉。
在PySide和PyQt中,具有默认参数的信号实际上具有两个重载:“ no-op”版本不发送任何内容(或在PyQt中始终发送False
)和“ active”版本,其发送当前已检查状态。
默认为“ no-op”版本,因此,要获得“ active”版本,必须明确选择它,如下所示:
action.triggered[bool].connect(slot)
至于插槽签名:在PySide中,最可靠的解决方案可能是:
def slot(self, checked=False):
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句