5

私は以前にPythonで働いたことはありません。矢印を配置して、矢印の位置と角度を変更できる、非常に単純な 2D サーフェスを作成する必要があります。

私はtkinterでそのようなものを作り始めましたが、私が理解しているように、画像を回転させることはできません. 私の理解では、回転できるのはポリゴンのみです。矢印を多角形として描くのは少し複雑に思えます。

この種の単純なものにより適した他のツールはありますか?

ありがとう

4

3 に答える 3

5

Tkinter は、このような単純なタスクに最適です。ほとんどの場合、すでにインストールされており、Canvasウィジェットは非常に強力です。端に矢印のある線を描く機能が組み込まれており、回転は非常に簡単です。

Tkinter についての「常識」に惑わされないでください。Tkinter は最新で安定した、非常に使いやすいツールキットです。それを使って次のフォトショップや 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 は、普通の人のための 3D プログラミングであると主張しています。これは、私が以前に使用したことがあり、手に取りやすいと感じたビジュアルに基づいています。

于 2012-09-21T12:06:44.623 に答える
0

wxPython GUIツールキット(とにかくTkInterよりも優れたプロフェッショナルなAFAIKと見なされます)には、そのImageクラスのrotateメソッドがあります:http ://wxpython.org/docs/api/wx.Image-class.html 。

Python Imaging Library(GUIツールキットではありませんが、イメージングライブラリ)も同様に画像の回転をサポートしています:http://effbot.org/imagingbook/image.htm

于 2012-09-21T11:54:40.863 に答える