[英]Moving a shaper using mouse click in Tkinter
如果要用鼠標左鍵單擊,我想使形狀向左移動,如果單擊鼠標右鍵,則要向右移動。 以下代碼不起作用。 我做錯了什么?
from tkinter import *
import time
tk =Tk()
canvas = Canvas(tk, width=500, height=500,)
tk.title("Drawing")
xbat = 0
def clickL(event):
xbat =- 1
print(xbat)
def clickR(event):
xbat =+ 1
print(xbat)
canvas.bind("<Button-1>", clickL)
canvas.bind("<Button-3>", clickR)
canvas.pack()
bat = canvas.create_rectangle(150, 500, 300, 480, fill="black")
while True:
canvas.move(bat,xbat,0)
tk.update()
time.sleep(0.01)
canvas.mainloop()
嘗試這個
from tkinter import *
tk =Tk()
canvas = Canvas(tk, width=500, height=500,)
tk.title("Drawing")
def clickL(event):
xbat = -1
print(xbat)
xmove(bat,xbat)
def clickR(event):
xbat = 1
print(xbat)
xmove(bat,xbat)
def xmove(object,x):
canvas.move(object,x,0)
canvas.bind("<Button-1>", clickL)
canvas.bind("<Button-3>", clickR)
canvas.pack()
bat = canvas.create_rectangle(150, 500, 300, 480, fill="black")
canvas.mainloop()
在tkinter代碼中使用while True
循環通常是不好的做法,它沒有給GUI時間更新。 相反,我更改了您的代碼,以便每個click事件都調用一個單獨的xmove函數。
另一種方法是單擊按鈕時更改對象的坐標,然后具有定期update
功能,該功能可將對象重新繪制/移動到其更新位置。 可以使用.after
方法實現此定期更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.