【发布时间】:2020-10-21 19:24:40
【问题描述】:
我正在使用 PySide2,但不清楚 Signal 和 Event
如果我们有两个人在做两个View。
人员 A 正在执行 ListView
人 B 正在做 ParameterView
当 ListItem 被选中时,更新 ParameterView
我应该如何连接它们?使用信号或事件?
也许我会有另一个 View,它也需要更新,而 ListItem selectChanged
信号
class ListView(QListView):
# do something
class ParameterView(QWidget):
def update(self):
# do something
list_view = ListView()
parameter_view = ParameterView()
list_view.selectChanged.connect(parameter_view.update)
事件
class ListView(QListView):
def selectChanged(self):
QApplication.sendEvent(self, SelectChangedEvent)
class SelectChangedEvent(QEvent):
# initialize ...
class ParameterView(QWidget):
def update(self):
# do something
def event(self, event):
if event.type() == SelectChangedEvent:
self.update()
【问题讨论】:
-
如果您使用线程,信号是一个不错的选择,信号可以在线程中发出并更改视图小部件