我想在tkinter中做一個簡單的遊戲,我需要將左/右箭頭鍵綁定到類方法。該方法也接受一個參數。我已經完成了綁定,但是當我點擊箭頭鍵時,沒有任何動作。我試圖給該方法添加一個打印語句,當我點擊這些鍵時,什麼也不打印,所以這個方法沒有被調用。我不認爲綁定正在工作,但我不知道如何解決它!事件綁定箭頭鍵pykin Tkinter
另外,如果用戶持有綁定的密鑰,有沒有辦法繼續運行綁定的方法?就像點擊並按住左鍵並讓方法反覆運行直到用戶放開。
謝謝。
from Tkinter import *
from math import *
global radius
radius=175
root=Tk()
c=Canvas(root,width=600,height=600)
c.pack()
c.configure(scrollregion=(-300, -300, 300, 300))
c.create_oval((-40,-40,40,40),fill="Yellow",outline="Yellow")
def findcoords(angle,radius):
#cos,sin
a=cos(radians(angle))
b=sin(radians(angle))
return ((a*radius),(b*radius),(a*radius),(b*radius))
def createOutline(radius):
t=0
while t<=360:
c.create_rectangle(findcoords(t,radius))
t+=.01
class World():
def __init__(self,canvas,img=None,size=20,angle=90):
self.size=size
self.angle=angle
self.position=self.findcoord()
self.canvas=canvas
if img!=None:
self.img=img
self.current=c.create_image(self.position,image=self.img)
else:
self.current=c.create_oval(self.position,fill="Blue",outline="Blue")
c.bind('<Left>',lambda event,arg=.1:self.move(event,arg))
c.bind('<Right>',lambda event,arg=-.1:self.move(event,arg))
def findcoord(self):
#cos,sin
a=cos(radians(self.angle))
b=sin(radians(self.angle))
return (((a*radius)-self.size),((b*radius)-self.size),((a*radius)+self.size),((b*radius)+self.size))
def move(self,n):
self.angle+=.1
self.position=self.findcoord()
self.canvas.coords(self.current,self.position)
createOutline(175)
a=World(c)
root.mainloop()