我已经定义了继承QbuttonGroup的自己的类
class TupleButtonGroup(QtGui.QButtonGroup):
def __init__(self,parent, tuple_pair):
super(TupleButtonGroup, self).__init__(parent)
self.tuple_pair = tuple_pair在单击按钮时,我希望访问用户数据tuple_pair,并在按钮组中单击相应的按钮。
button_group.buttonClicked[QtGui.QAbstractButton].connect(self.labelchanged)
def labelchanged(self, button):
print button.text()函数接收单击的按钮,但我不知道如何访问回调中的用户数据
发布于 2016-04-10 17:32:43
所有按钮都有一个组()方法,允许您获取添加到的任何组(如果有的话)的引用。因此,您的代码可以简单地是:
button_group.buttonClicked.connect(self.labelchanged)
def labelchanged(self, button):
print button.text()
print button.group().tuple_pair请注意,在连接信号时不需要指定QAbstractButton,因为这是默认的重载。
发布于 2016-04-10 07:02:49
你可以用几种方法。
您可以在子类中捕获buttonClicked信号,并发出包含tuple_pair的自己的信号。
class TupleButtonGroup(QtGui.QButtonGroup):
buttonClickedWithData = QtCore.pyqtSignal(tuple, QtGui.QAbstractButton)
def __init__(self,parent, tuple_pair):
super(TupleButtonGroup, self).__init__(parent)
self.tuple_pair = tuple_pair
self.buttonClicked[QtGui.QAbstractButton].connect(self.on_buttonClicked)
@QtCore.pyqtSlot(QtGui.QAbstractButton)
def on_buttonClicked(self, button):
self.buttonClickedWithData.emit(self.tuple_pair, button)然后连接到那个新信号
button_group.buttonClickedWithData.connect(self.labelchanged)
@QtCore.pyqtSlot(tuple, QtGui.QAbstractButton)
def labelchanged(self, tuple_pair, button):
print tuple_pair
print button.text()另一个选项是使用现有的类、信号和插槽,并使用.sender()方法从时隙方法中获取按钮组的引用。
@QtCore.pyqtSlot(QtGui.QAbstractButton)
def labelchanged(self, button):
btngroup = self.sender()
print btngroup.tuple_pair
print button.text()https://stackoverflow.com/questions/36525251
复制相似问题