如何在具有值而不是单个变量值的列表上应用 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')
【问题讨论】:
valueChanged
是Foo
本身的信号,所以你应该做self.valueChanged.connect(self.do_something)
。应该与信号一起发出的值是在发出信号时确定的,而不是在将信号连接到插槽时确定。
感谢您的解释,您的解决方案已解决。如果您可以将其发布为答案,我可以重复奖励它并将其从未解决的问题列表中清除;-)
我已添加我的评论作为答案
【参考方案1】:
valueChanged
是Foo
本身的信号,所以你应该使用self.valueChanged.connect(self.do_something)
而不是self.t.valueChanged.connect(self.do_something)
。毕竟,应该与信号一起发出的值是在发出信号时确定的,而不是在将信号连接到插槽时确定的。
【讨论】:
以上是关于如何在具有值而不是单个变量值的列表上应用 PyQt5 事件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 PyQt4 中使用 QThread 运行线程时更新变量值
如何根据 PL/SQL 变量值检查输入参数值是不是存在作为列表?
在 mvn deploy 之前将变量值应用于 Pom.xml [关闭]