2012-02-17 4 views
0

私はTkinterライブラリを使って基本描画ウィジェットを書こうとしています。Python - 基本 - 数学に基づく変数の単純な集合の 'class('?)関数を作る方法

私は今のところ使用しています非常に基本的なコードは次のとおりです。

from Tkinter import * 
master = Tk() 
w = Canvas(master, width=1200, height=800) 
w_centre = 600 
h_centre = 400 
w.pack() 
w.create_oval(w_centre-50, h_centre-50, w_centre+50, h_centre+50) 
mainloop() 

実際に何をしたいのか3つの変数、X、Y(円の中心)とサイズで開始しています。そこから、円を作るために必要な(x0、y0、x1、y1)セットを簡単な数式で計算することができます(http://docs.huihoo.com/tkinter/tkinter-reference-a-gui-for- python/create_oval.html)

データセットの値としてサイズを入力し、依存値としてx、yを供給することで、これをプログラマチックに行いたいと思います(1つの円が必要な場合はx1、 y1もし2つの円が必要ならx2、y2 & x3、y3など)。目的は、私が持っているデータセットのための基本的なビジュアライザーを構築しようとすることです。私は必要に応じて検索できるx、y座標の配列を書くことができます、そして、サイズの値がリストから引き出されるので、サイズを取る関数を書く方が良いでしょう。 x、yを指定し、create_circleコールに適切な値を与えます。

は、私はX0、Y0、X1、Y1の値を持つcreate_oval機能を呼び出す必要が知っている、と私は私がそれを渡すことで、これらの値を毎回行うことができます別の関数を呼び出すことができます方法があったのだろうかx、y(円の中心)、サイズ(半径)の値を返します。これは関連するx0、y0、x1、y1の値を返します。

これは再利用可能な数学なので、私はクラスを作る必要があると思いますが、クラス関数を定義する方法を理解するのに役立つチュートリアルは見つかりません。それが必要。

私はこれを非常にうまく言わなかったことを誇りに思っています。私は何か間違った名前を付けてしまったり、重要なことを忘れてしまった場合、自分自身で(CSバックグラウンドなしで)初歩的なpythonを学ぼうとしています。

誰かが私にヒントやまともなレスソースへのポインタを投げてもらえますか?

答えて

1

Pythonでは、関数から任意の種類のオブジェクトを返すことができます。

def enclosing_box(x, y, radius): 
    """Given the coordinates of the circle center and its radius, return the top-left and bottom-right coordinates of the enclosing box.""" 
    return (x-radius, y-radius, x+radius, y+radius) 

は、その後、あなたがなどのシーケンス(リスト、タプル、から取られた引数のセットで関数を呼び出すために*args syntaxを使用することができます。具体的には、あなたが​​のために必要なタプル(x0,y0,x,1,y1)を返すことができます。 )。それを使って​​に電話してください:

coords = enclosing_box(x,y,radius) 
w.create_oval(*coords) 
+0

ワウ。そう簡単だ!ありがとうございました!私は明らかにこれの基本を持ち歩く必要がありますが、それは基本的なhuuuuugeステップです。ありがとうございました! –