【发布时间】:2016-10-04 17:59:13
【问题描述】:
我有一个看起来像 This 的 PyQt5 应用程序。现在,使用“bailar”按钮,我希望网格上的角色左右看几次。我通过以下方法做到这一点:
def dance(self):
"""
Make the P1 dance
"""
p1 = self._objects['P1']
x = p1.x
y = p1.y
cell = self.worldGrid[y][x]
for i in xrange(3):
print("Moving my head...")
cell.objectLeaves('P1')
p1.pixmap = p1.pixmap.transformed(QTransform().scale(-1, 1))
cell.objectArrives('P1', p1)
time.sleep(0.2)
但是,包含像素图的标签仅在最后一次迭代时更新。我知道这一定是更新函数是异步的并且 time.sleep() 阻塞了主线程的问题,但我不知道我还能如何显示动画。我尝试使用带有 moveToThread 方法的 QThread,但它失败了,因为 gird 小部件是主窗口的子窗口。有什么想法吗?
【问题讨论】:
-
您可能想使用Qt animation framework
标签: python multithreading python-2.7 pyqt pyqt5