如何在具有值而不是单个变量值的列表上应用 PyQt5 事件? [关闭]

Posted

技术标签:

【中文标题】如何在具有值而不是单个变量值的列表上应用 PyQt5 事件? [关闭]【英文标题】:How to apply PyQt5 Event on a list with values instead of single variable value? [closed] 【发布时间】:2020-05-09 11:25:13 【问题描述】:

根据here 给出的 SO 问题和答案,我修改了值变成列表的答案。它给我一个错误。

该值是否可能实际上是一个带有值的列表?喜欢value=[1,2,3]?在这种情况下,该列表表示 GUI 中三个级别的 tabWidget 索引位置......或者这是否以不同的方式处理?欢迎所有/其他建议。

回溯错误:

createAction
    self.tabindex.valueChanged.connect(self.do_something)
AttributeError: 'list' object has no attribute 'valueChanged'

代码:

class Foo(QWidget):

    valueChanged = pyqtSignal(object)

    def __init__(self, parent=None):
        super(Foo, self).__init__(parent)
        self._t = [1,2,3]

    @property
    def t(self):
        return self._t

    @t.setter
    def t(self, list):
        self._t = list
        self.valueChanged.emit(list)

    def createAction(self):
        self.t.valueChanged.connect(self.do_something)

    def do_something(self):
        ...
        print('show something here')        

【问题讨论】:

valueChangedFoo 本身的信号,所以你应该做self.valueChanged.connect(self.do_something)。应该与信号一起发出的值是在发出信号时确定的,而不是在将信号连接到插槽时确定。 感谢您的解释,您的解决方案已解决。如果您可以将其发布为答案,我可以重复奖励它并将其从未解决的问题列表中清除;-) 我已添加我的评论作为答案 【参考方案1】:

valueChangedFoo 本身的信号,所以你应该使用self.valueChanged.connect(self.do_something) 而不是self.t.valueChanged.connect(self.do_something)。毕竟,应该与信号一起发出的值是在发出信号时确定的,而不是在将信号连接到插槽时确定的。

【讨论】:

以上是关于如何在具有值而不是单个变量值的列表上应用 PyQt5 事件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt4 中使用 QThread 运行线程时更新变量值

如何根据 PL/SQL 变量值检查输入参数值是不是存在作为列表?

在 mvn deploy 之前将变量值应用于 Pom.xml [关闭]

PHP三元速记运算符中使用isset()时获取变量值

在 ag 网格下拉列表中,如何在选择后显示名称并在保存集值而不是名称上显示。?

PyQt5:具有多处理功能的单个 QProgressBar 卡住了