5

我以前没有在 python 中工作过。我需要做一个非常简单的 2d 表面,我可以在其中放置一个箭头,然后能够更改箭头的位置和角度。

我开始在 tkinter 中构建类似的东西,但据我了解,您无法旋转图像。据我了解,只有多边形可以旋转。将箭头绘制为多边形似乎有点过于复杂。

还有其他一些工具更适合这种简单的东西吗?

谢谢

4

3 回答 3

5

Tkinter 是完成如此简单任务的绝佳选择。您几乎可以肯定已经安装了它,并且Canvas小部件非常强大。它内置了绘制末端带有箭头的线条的功能,并且旋转非常直接。

不要让关于 Tkinter 的“常识”影响你——它是一个现代、稳定且非常易于使用的工具包。你不能用它创建下一个 Photoshop 或 iMovie,但对于大多数人和大多数应用程序来说,它是一个非常可靠、实用的选择。

这是一个快速而肮脏的例子:

import Tkinter as tk
import math

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.canvas = tk.Canvas(self, width=400, height=400)
        self.canvas.pack(side="top", fill="both", expand=True)
        self.canvas.create_line(200,200, 200,200, tags=("line",), arrow="last")
        self.rotate()

    def rotate(self, angle=0):
        '''Animation loop to rotate the line by 10 degrees every 100 ms'''
        a = math.radians(angle)
        r = 50
        x0, y0 = (200,200)
        x1 = x0 + r*math.cos(a)
        y1 = y0 + r*math.sin(a)
        x2 = x0 + -r*math.cos(a)
        y2 = y0 + -r*math.sin(a)
        self.canvas.coords("line", x1,y1,x2,y2)
        self.after(100, lambda angle=angle+10: self.rotate(angle))

app = ExampleApp()
app.mainloop()
于 2012-09-21T12:02:23.633 回答
1

您可能会查看视觉和/或 vpython。http://www.vpython.org/ Vpython 声称是为普通人设计的 3-d 编程。它基于我以前使用过的视觉效果,并且很容易上手。

于 2012-09-21T12:06:44.623 回答
0

wxPython GUI 工具包(无论如何都认为 AFAIK 比 TkInter 更好、更专业)为其 Image 类提供了一个旋转方法:http ://wxpython.org/docs/api/wx.Image-class.html 。

Python 图像库(不是 GUI 工具包,而是图像库)同样支持图像旋转:http ://effbot.org/imagingbook/image.htm 。

于 2012-09-21T11:54:40.863 回答