【发布时间】:2020-10-07 14:37:09
【问题描述】:
我的问题可能不清楚。基本上,我有一个列表,当附加到列表或更改大小以运行函数时,我需要安装一个信号。下面是我想要的一个简单示例。 它在 PyQt5 中可行还是没有这样的事情?
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
class MyList(QObject):
# Signal emitted when the list is resized, int:newsize
resized = pyqtSignal(list)
def __init__(self):
QObject.__init__(self)
# "Hide" the values and expose them via properties
self._list = [1,2]
@property
def res(self):
return self._list
@res.setter
def res(self, new_list):
self._list.append(new_list)
self.resized.emit(new_list)
# A slot for the "resized" signal, accepting the radius
@pyqtSlot(list)
def on_resized(r):
print('resized', r)
c = MyList()
#
c.resized.connect(on_resized)
#
c.res.append(20)
# delete all
c.res[:] = []
【问题讨论】:
-
您是否在问如何创建自定义信号以及如何发出它们?
-
是的。我想要的信号是在列表更改大小时发出的。然后运行连接到该信号的函数。希望你能帮忙