Ваш пост подразумевает трудности с пониманием, как вращать треугольники, используя комплексные числа.После прочтения вашего комментария в ответ на мой ответ я отредактировал пример кода, чтобы продемонстрировать способ получения угла ввода с клавиатуры.У меня нет опыта работы с Tkinter, поэтому, возможно, кто-то может помочь с более современным подходом.Получено из Tkinter: события и привязки и Виджет ввода Tkinter
При вводе обработчика события нажатия клавиши текст виджета Entry, полученный с помощью 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()