python - 线性指南针 python 动画
问题描述
有没有办法在 python 中制作动画(最好使用 PyQt5),从文本文件中读取度数并在线性指南针上显示?要查看线性指南针的外观,请参阅: https ://www.youtube.com/watch?v=XPTboqggOdw&feature=player_embedded
解决方案
制作指南针方法...其中 Painter 是 QPainter 对象,r 是 self.rect 作为小部件的大小。yaw 是不断更新指南针的值数组。
def Compass(self,painter,yaw,r):
i = r.center().x()
# print(yaw)
yaw_pix = int(yaw*6)
pos_pix = yaw_pix + r.center().x()
deg_pix = 0
if(yaw<0):
yaw+=360
painter.drawLine(r.center().x(),10,r.center().x(),35)
painter.drawText(r.center().x()-10,50,str(int(yaw)))
if (pos_pix <= r.right()):
shift = r.center().x() - pos_pix
else:
pos_pix = r.center().x()-(pos_pix-r.center().x())
shift = r.center().x() - pos_pix
if(shift >= 0):
while (i <= r.right()+shift):
j = r.center().x()-(i-r.center().x())
if (i <= r.right()+shift) and ((i-r.center().x())%90 == 0):
angle = deg_pix/6
painter.drawLine(i+shift,15,i+shift,30)
painter.drawText(i+shift,15,str(int(angle)))
if (i != j):
painter.drawLine(j+shift,15,j+shift,30)
painter.drawText(j+shift,15,str(int(360-angle)))
painter.drawLine(i+shift,20,i+shift,30)
painter.drawLine(j+shift,20,j+shift,30)
i+=30
deg_pix+=30
else:
while (i <= r.right()-shift):
j = r.center().x()-(i-r.center().x())
if (i <= r.right()-shift) and ((i-r.center().x())%90 == 0):
angle = deg_pix/6
painter.drawLine(i+shift,15,i+shift,30)
painter.drawText(i+shift,15,str(int(angle)))
if (i != j):
painter.drawLine(j+shift,15,j+shift,30)
painter.drawText(j+shift,15,str(int(360-angle)))
painter.drawLine(i+shift,20,i+shift,30)
painter.drawLine(j+shift,20,j+shift,30)
i+=30
deg_pix+=30
推荐阅读
- javascript - 需要做些什么来实现对 Javascript 的多屏幕支持?
- flutter - Flutter:如何在构建方法之前在小部件上发出一系列 http 请求
- r - 根据条件返回数组中具有 NA 的矩阵的索引
- javascript - 如何构建一个数据表,顶部有一个保管箱过滤器,在后端计算?
- java - Android Studio - Gradle 同步
- python-3.x - 如何使用 Selenium 和 python 检查 Chrome 中的复选框
- javascript - 使用 async-await 时如何将 Resolve 回调传递给 Promise?
- python - 连接到在我的 pi 上运行的烧瓶应用程序
- java - TXT 文件中日期格式为 yyyymmdd
- google-sheets - 是否可以在 Google 表格中批量编辑公式?