使用QTimer对象代替QBasicTimer对象,修改程序
时间: 2023-08-14 22:05:00 浏览: 85
PyQt5使用QTimer实现电子时钟
好的,我来帮你修改程序。首先,我们需要将之前使用QBasicTimer的部分改为QTimer。这两个类的主要区别在于精度和可移植性,QTimer可以在各种平台上运行,而QBasicTimer只能在Windows和Linux上运行。下面是修改后的代码:
```python
import sys
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 350)
self.setWindowTitle('Animation')
self.timer = QTimer(self)
self.timer.timeout.connect(self.update)
self.timer.start(50)
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
qp.setBrush(QColor(255, 0, 0))
qp.drawEllipse(self.x, self.y, 30, 30)
qp.end()
self.x += self.dx
self.y += self.dy
if self.x > self.width() - 30 or self.x < 0:
self.dx = -self.dx
if self.y > self.height() - 30 or self.y < 0:
self.dy = -self.dy
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
if e.key() == Qt.Key_Space:
self.dx = 0
self.dy = 0
x = 0
y = 0
dx = 2
dy = 2
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
```
在这个程序中,我们使用了QTimer对象代替了QBasicTimer对象,并将其连接到了update()槽上。我们还将计时器的间隔设置为50毫秒,以便更好地控制动画的速度。除此之外,程序的其他部分与之前的版本相同。
阅读全文