Pyqtgraph RemoteGraphics查看和连接信号

时间:2014-09-05 18:18:24

标签: proxy pyqt pyqtgraph

所以我目前在我的应用程序中使用了RemoteGraphicsView,并且我已经包含了一个LinearRegionItem 进入视野。我试图连接信号" sigRegionChanged"到我的应用程序中的函数,但我得到以下错误取决于我尝试。

新风格信号/插槽

my_region.sigRegionChanged.connect(self.my_function)

我收到来自处理程序调用的以下错误

  

_pickle.PicklingError:无法发现:属性查找builtins.method失败

旧式

self.connect(spot_area, QtCore.SIGNAL('sigRegionChanged'), self.spot_adjusted)

获取有关spot_area是ObjectProxy的错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这是因为您尝试将回调函数直接发送到远程进程,并且pickle不知道如何序列化函数。相反,您需要手动为回调创建代理并发送该代码:

proxy = pg.multiprocess.proxy(self.my_function, callSync='off', autoProxy=True) 
myRegion.sigRegionChanged.connect(proxy)

这里还有其他一些细微之处:

  • callSync参数通过告诉远程进程在调用回调时等待返回值来提高性能。
  • 需要autoProxy参数,因为当远程进程调用回调时,它将尝试发送LinearRegionItem作为参数(因为这是信号的第一个参数)。使用autoProxy=True指示远程进程通过代理发送它而不是试图腌制它(这会失败)。