簡體   English   中英

在Tkinter中使用鼠標單擊來移動成型器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM