Python GUI 小车动画:从左上角到右下角匀速移动
下面是一个实现上述要求的 Python 代码示例:
import sys
import time
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QIcon, QPainter
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QSystemTrayIcon, QMenu
class Car(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 600, 400)
self.setWindowTitle('Car')
self.setWindowIcon(QIcon('car_icon.png')) # 替换为自己的小车图标
self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QIcon('car_icon.png')) # 替换为自己的小车图标
self.tray_icon.setToolTip('Car')
self.tray_icon.show()
self.tray_menu = QMenu()
self.restore_action = self.tray_menu.addAction('恢复')
self.quit_action = self.tray_menu.addAction('退出')
self.tray_icon.setContextMenu(self.tray_menu)
self.restore_action.triggered.connect(self.restore)
self.quit_action.triggered.connect(self.quit)
self.speed = 1 # 初始速度为1
self.x = 0
self.y = 0
self.car_width = 50
self.car_height = 30
self.timer = None
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawCar(qp)
qp.end()
def drawCar(self, qp):
qp.setBrush(Qt.black)
qp.drawRect(self.x, self.y, self.car_width, self.car_height)
def moveCar(self):
self.x += self.speed
self.y += self.speed
if self.x > self.width() or self.y > self.height():
self.timer.stop()
def restore(self):
self.show()
def quit(self):
self.tray_icon.hide()
self.close()
def closeEvent(self, event):
event.ignore()
self.hide()
if __name__ == '__main__':
app = QApplication(sys.argv)
car = Car()
car.timer = QTimer()
car.timer.timeout.connect(car.moveCar)
car.timer.start(10) # 定时器间隔为10毫秒,控制小车移动的速度
sys.exit(app.exec_())
上述代码使用 PyQt5 库创建了一个窗口,继承自 QWidget 类,并实现了绘制小车、移动小车、恢复窗口、退出程序等功能。其中,小车的移动通过定时器实现,定时器的间隔可以通过调整car.timer.start()方法的参数来控制小车的速度。程序转入后台时,窗口会隐藏,但定时器仍在继续移动小车。右键点击托盘区图标可以弹出菜单,点击'恢复'可以重新显示窗口,点击'退出'可以退出程序。
原文地址: http://www.cveoy.top/t/topic/befl 著作权归作者所有。请勿转载和采集!