Pyqtgraph 的 ImageView 不发出 "time changed" 信号
Pyqtgraph's ImageView does not emit "time changed" signal
考虑这个最小的例子,目标是显示 pyqtgraph 的 ImageView 的当前 "time index":
import pyqtgraph as pg
import numpy as np
pg.mkQApp()
view = pg.ImageView()
view.setImage(np.random.normal(size=(100,100,100)))
view.show()
def indexChanged():
print view.currentIndex
view.sigTimeChanged.connect(indexChanged)
只要用鼠标改变时间,这个就很好用。当使用键盘箭头更改时间时,似乎没有发出 sigTimeChanged ?还是我遗漏了什么?
有什么解决这个问题的建议吗?
嗯...我深入研究了源代码并做了一个小补丁(实际上,只是重新排序了语句):
class PatchedImageView(pg.ImageView):
def timeLineChanged(self):
(ind, time) = self.timeIndex(self.timeLine)
self.sigTimeChanged.emit(ind, time)
if self.ignoreTimeLine:
return
self.play(0)
if ind != self.currentIndex:
self.currentIndex = ind
self.updateImage()
它似乎有效,但我不确定我没有破坏任何东西。
考虑这个最小的例子,目标是显示 pyqtgraph 的 ImageView 的当前 "time index":
import pyqtgraph as pg
import numpy as np
pg.mkQApp()
view = pg.ImageView()
view.setImage(np.random.normal(size=(100,100,100)))
view.show()
def indexChanged():
print view.currentIndex
view.sigTimeChanged.connect(indexChanged)
只要用鼠标改变时间,这个就很好用。当使用键盘箭头更改时间时,似乎没有发出 sigTimeChanged ?还是我遗漏了什么?
有什么解决这个问题的建议吗?
嗯...我深入研究了源代码并做了一个小补丁(实际上,只是重新排序了语句):
class PatchedImageView(pg.ImageView):
def timeLineChanged(self):
(ind, time) = self.timeIndex(self.timeLine)
self.sigTimeChanged.emit(ind, time)
if self.ignoreTimeLine:
return
self.play(0)
if ind != self.currentIndex:
self.currentIndex = ind
self.updateImage()
它似乎有效,但我不确定我没有破坏任何东西。