您的文章暗示困難瞭解如何旋轉使用複數的三角形。 在閱讀您的評論以回覆我的回答之後,我編輯了我的代碼示例以演示從鍵盤輸入獲取角度的方法。 我沒有Tkinter的經驗,所以也許有人可以幫助採用更先進的方法。 從Tkinter: Events and Bindings和The Tkinter Entry Widget
蒐集當你輸入按鍵事件處理,輸入構件的文本,用text.get()檢索,不包括最新的按鍵字符。
輸入的角度是度數,可以是負數。的任何
from Tkinter import *
import tkSimpleDialog as tks
import cmath,math
root = Tk()
c = Canvas(root,width=200, height=200)
c.pack()
# keypress event
def key(event):
text.focus_force()
ch=event.char
# handle backspace
if ch=='\x08':
if len(text.get())>1 :
entry_text=text.get()[:-1]
if entry_text=='-': entry_text='0'
else:
entry_text='0'
else:
entry_text=text.get()+ch
# we want an integer
try:
angle_degrees=int(entry_text)
cangle = cmath.exp(angle_degrees*1j*math.pi/180)
offset = complex(center[0], center[1])
newxy = []
for x, y in triangle:
v = cangle * (complex(x, y) - offset) + offset
newxy.append(v.real)
newxy.append(v.imag)
c.coords(polygon_item, *newxy)
except ValueError:
print "not integer"
text = Entry(root)
text.bind("<Key>", key)
text.pack()
text.focus_force()
# a triangle
triangle = [(50, 50), (150, 50), (150, 150)]
polygon_item = c.create_polygon(triangle)
center = 100, 100
mainloop()
目前尚不清楚你的問題是什麼。 –
我想讓你嘗試在我的代碼中發現這個錯誤 – fps6