Proxy Pyqtgraph RemoteGraphics视图和连接信号

Proxy Pyqtgraph RemoteGraphics视图和连接信号,proxy,pyqt,pyqtgraph,Proxy,Pyqt,Pyqtgraph,因此,我目前在我的应用程序中使用RemoteGraphicsView,并包含一个LinearRegionItem 进入视野。我试图将信号“sigRegionChanged”连接到我的应用程序中的一个函数,但根据我的尝试,我得到了以下错误 新型信号/槽 my_region.sigRegionChanged.connect(self.my_function) 我从处理程序调用中得到以下错误 _pickle.PicklingError:无法pickle:属性查找内置项.method失败 旧式 sel

因此,我目前在我的应用程序中使用RemoteGraphicsView,并包含一个LinearRegionItem 进入视野。我试图将信号“sigRegionChanged”连接到我的应用程序中的一个函数,但根据我的尝试,我得到了以下错误

新型信号/槽

my_region.sigRegionChanged.connect(self.my_function)
我从处理程序调用中得到以下错误

_pickle.PicklingError:无法pickle:属性查找内置项.method失败

旧式

self.connect(spot_area, QtCore.SIGNAL('sigRegionChanged'), self.spot_adjusted)
获取有关spot_区域是ObjectProxy的错误


有什么想法吗?

出现这种情况是因为您试图将回调函数直接发送到远程进程,而pickle不知道如何序列化函数。相反,您需要手动为回调创建一个代理,并发送该代理:

proxy = pg.multiprocess.proxy(self.my_function, callSync='off', autoProxy=True) 
myRegion.sigRegionChanged.connect(proxy)
这里还有其他一些微妙之处:

  • callSync
    参数通过告诉远程进程在调用回调时不应等待返回值来提高性能
  • 需要
    autoProxy
    参数,因为当远程进程调用回调时,它将尝试将
    LinearRegionItem
    作为参数发送(因为这是信号的第一个参数)。使用
    autoProxy=True
    指示远程进程通过代理发送,而不是尝试对其进行pickle(这将失败)
谢谢!我很快就会试试这个。所以,我想autoProxy是关键之一。我以前尝试过使用多进程代理,但收到了相同的错误。为了我的教育和好奇心,有没有理由不排除方法?我想不出一个好的理由。默认情况下,可能应该启用
autoProxy
。。