gpt4 book ai didi

python - 如何更新pyqt中的图表之类的东西

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:04 24 4
gpt4 key购买 nike

我有类似图表的东西,但遇到了麻烦。我需要画雪人,它沿着余弦轨迹移动。

import sys
import math
import time
from PyQt4 import QtGui, QtCore
class MyFrame(QtGui.QGraphicsView):
def __init__( self, parent = None ):
super(MyFrame, self).__init__(parent)
self.resize(800,600)
scene = QtGui.QGraphicsScene()
self.setScene(scene)

for x in range(100):

y = 100*(math.cos(x+200))

pen1 = QtGui.QPen(QtGui.QColor(QtCore.Qt.red))
brush1 = QtGui.QBrush(pen1.color().darker(255))
item1 = scene.addEllipse(x, y, 100, 100, pen1,brush1)

pen2 = QtGui.QPen(QtGui.QColor(QtCore.Qt.green))
brush2 = QtGui.QBrush(pen2.color().darker(150))
item2 = scene.addEllipse(x-25, y+100, 150, 150, pen2,brush2)

pen3 = QtGui.QPen(QtGui.QColor(QtCore.Qt.blue))
brush3 = QtGui.QBrush(pen3.color().darker(150))
item3 = scene.addEllipse(x-50, y+250, 200, 200, pen3,brush3)
time.sleep(3)



app = QtGui.QApplication([])
f = MyFrame()
f.show()
app.exec_()

现在我有一些问题。当我使用 time.sleep(2) 时,只需等待几秒钟即可显示最终结果,无需任何步骤。1)我需要做什么来修复它?2)当它看起来像移动动画时,我需要做什么?我尝试使用QPoint,但是在我的代码中使用它有点困难,我没有经验,我相信,这个问题解决起来更容易。

最佳答案

首先,您将在 __init__ 方法中执行动画,这意味着整个过程将在您显示帧之前完成。相反,将其分解为一个单独的方法,您可以在 f.show() 之后调用。

第二,您需要在动画期间抛出 processEvents() 调用,以强制 qt 重绘屏幕。

第三,您可能想要清除绘图之间的场景。

import sys
import math
import time
from PyQt4 import QtGui, QtCore
class MyFrame(QtGui.QGraphicsView):
def __init__( self, parent = None ):
super(MyFrame, self).__init__(parent)
self.resize(800,600)
self.scene = QtGui.QGraphicsScene()
self.setScene(self.scene)

def doAnimation(self):
for x in range(5):

self.scene.clear();
y = 100*(math.cos(x+200))

pen1 = QtGui.QPen(QtGui.QColor(QtCore.Qt.red))
brush1 = QtGui.QBrush(pen1.color().darker(255))
item1 = self.scene.addEllipse(x, y, 100, 100, pen1,brush1)

pen2 = QtGui.QPen(QtGui.QColor(QtCore.Qt.green))
brush2 = QtGui.QBrush(pen2.color().darker(150))
item2 = self.scene.addEllipse(x-25, y+100, 150, 150, pen2,brush2)

pen3 = QtGui.QPen(QtGui.QColor(QtCore.Qt.blue))
brush3 = QtGui.QBrush(pen3.color().darker(150))
item3 = self.scene.addEllipse(x-50, y+250, 200, 200, pen3,brush3)

QtGui.QApplication.processEvents()
time.sleep(1)

app = QtGui.QApplication([])
f = MyFrame()
f.show()
f.doAnimation()
app.exec_()

关于python - 如何更新pyqt中的图表之类的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com