首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyqt QbuttonGroup:在buttonClicked上传递用户数据

pyqt QbuttonGroup:在buttonClicked上传递用户数据
EN

Stack Overflow用户
提问于 2016-04-10 03:01:39
回答 2查看 1.6K关注 0票数 1

我已经定义了继承QbuttonGroup的自己的类

代码语言:javascript
复制
class TupleButtonGroup(QtGui.QButtonGroup):
    def __init__(self,parent, tuple_pair):
        super(TupleButtonGroup, self).__init__(parent)
        self.tuple_pair = tuple_pair

在单击按钮时,我希望访问用户数据tuple_pair,并在按钮组中单击相应的按钮。

代码语言:javascript
复制
button_group.buttonClicked[QtGui.QAbstractButton].connect(self.labelchanged)

def labelchanged(self, button):
   print button.text()

函数接收单击的按钮,但我不知道如何访问回调中的用户数据

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-10 17:32:43

所有按钮都有一个组()方法,允许您获取添加到的任何组(如果有的话)的引用。因此,您的代码可以简单地是:

代码语言:javascript
复制
button_group.buttonClicked.connect(self.labelchanged)

def labelchanged(self, button):
    print button.text()
    print button.group().tuple_pair

请注意,在连接信号时不需要指定QAbstractButton,因为这是默认的重载。

票数 1
EN

Stack Overflow用户

发布于 2016-04-10 07:02:49

你可以用几种方法。

您可以在子类中捕获buttonClicked信号,并发出包含tuple_pair的自己的信号。

代码语言:javascript
复制
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)

然后连接到那个新信号

代码语言:javascript
复制
button_group.buttonClickedWithData.connect(self.labelchanged)

@QtCore.pyqtSlot(tuple, QtGui.QAbstractButton)
def labelchanged(self, tuple_pair, button):
    print tuple_pair
    print button.text()

另一个选项是使用现有的类、信号和插槽,并使用.sender()方法从时隙方法中获取按钮组的引用。

代码语言:javascript
复制
@QtCore.pyqtSlot(QtGui.QAbstractButton)
def labelchanged(self, button):
    btngroup = self.sender()
    print btngroup.tuple_pair
    print button.text()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36525251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档