2011-08-09 10 views
0

キャンバスオブジェクトを作成するときに浮動小数点座標を使用する方法は?たとえば
Tkinterキャンバス座標の浮動小数値

from Tkinter import * 
    import math 

    main=Tk() 
    w=Canvas(main, height=100, width=100) 
    w.grid(row=0, column=0) 
    for y in range(100): 
     for x in range(100): 
      if y==math.sin(x): 
       w.create_oval(x, y, x, y) 
     x=0 

それは空白のフォームを返す... だから、私はどのように使用できるかも座標として数をフロート?

答えて

0

いくつかの問題があります。

  1. sin(x)

    は、-1より大きく1以下になることはありませんので、それはあなたの全体のループ構造が間違っている100までyをチェックしても意味がありません。あなたはの整数値にxを一致させたい場合は
  2. sin(x)(1、0、-1)、あなたは真ではありません小数点演算の作品、0==sin(pi)または0==sin(2*pi)フローティング方法のためmath.pi/2
  3. xを乗算する必要があります-0.01 < sin(pi) < 0.01のようなものをチェックする必要があります。
  4. ​​は、左上と右下の2つの異なるペアを必要とします(x, y)。両方の点で同じ値を渡しているので、この点に到達した場合は1つの点しか表示されません。
  5. x=0は不要です。新しいyの値になるたびに、xの新しいrange(100)が作成されるためです。

編集:@eryksunは#4があなたの意図であるかもしれないというコメントで指摘しました。もしそうなら、その部分は正しかったし、全体がより意味をなさない - それは正弦曲線をプロットしようとしているように見える。また、必ずxmath.pi/2を掛けたがっているとは限りません。

そのような場合、あなたのコードは、(できるだけ変更)のようなものが考えられます。彼はそれが見えるように望んであまりを推測する私の意図はなかった@eryksun

from Tkinter import * 
import math 

main=Tk() 
w=Canvas(main, height=100, width=100) 
w.grid(row=0, column=0) 
for x in range(100): 
    # this makes the sine curve y-value 
    # stretch from 0 to 100 instead of -1 to 1 
    y = 49.5 - math.sin(x) * 49.5 
    w.create_oval(x, y, x, y) 
+0

。あなたが言った最初のことを変えるのは、あなたが少なくともこの窓の外に出ようとはしないからです。 2番目は私が彼が望んでいるものを推測しようとはしません、私は#2でその問題を言及しました。 – agf

関連する問題