2012-09-21 16 views
5

私はこれまでpythonで作業していませんでした。私は矢印を置いて矢印の位置と角度を変えることができる、本当にシンプルな2D面をする必要があります。Pythonで矢印付きの単純な2次元表面?

私はtkinterのようなものを作り始めましたが、理解しているようにイメージを回転することはできません。私の理解では、ポリゴンだけを回転させることができます。ポリゴンとして矢印を描くのは少し複雑すぎるようです。

このような単純なものに適したツールがいくつかありますか? http://wxpython.org/docs/api/wx.Image-class.html

おかげ

答えて

0

wxPythonのGUIツールキット(私の知る限り、より良いととにかくTkinterのより専門的な考えられては)そのImageクラスのための回転の方法があります。

GUIツールキットではなく、イメージングライブラリであるPythonイメージングライブラリは、同様に画像回転をサポートしています(http://effbot.org/imagingbook/image.htm)。

+0

「もっとプロフェッショナル」をどのように定義しますか?その声明は私には意味をなさない。 –

+0

結果のGUIのルック・アンド・フィールだけ。私は実際にwxPythonに個人的な賭けを持っていません。それは、人々が言うことを聞いただけのものです(Tkinterに関して)。どちらにしても気にしない。 – Harel

5

Tkinterは、このような単純なタスクに最適です。ほぼ確実に既にインストールされており、Canvasウィジェットは非常に強力です。それは、最後に矢を持つ線を描画するための機能を内蔵しており、回転は非常に簡単です。

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() 
+0

私は同意します。私は私の 'Tkinter'アプリが見た目がいいと感じます。 – mgilson

+0

そのコードはすばらしく見えます。私はそれを試して、自分のために見ます。ありがとう! – Chippen

1

あなたは、視覚的および/またはvpythonに見えるかもしれません。 http://www.vpython.org/ Vpythonは普通の人間のための3-Dプログラミングであると主張しています。それは私が以前に使っていた視覚に基づいており、拾いやすい。

+0

これは良い候補答えのように見えます。この回答をより完全にするには、APIなどへのリンクが役立ちます。 – scorpiodawg

関連する問題