1
我試着用帆布創建紅色cirlce或黃色標籤,上面有「X」來改變鼠標的提示。Tkinter的部件跟隨鼠標移動
我使用了一個「哪裏」功能來捕捉鼠標移動,併爲我提供鼠標尖的當前位置,因此將上述任一提示放置在mounse尖端位置即紅色圓圈或黃色標籤。
我意識到,如果他們是在鼠標右尖放置,也不是那麼理想,因爲它可以屏蔽底層的窗口小部件,但是讓我們把那一邊。
使用下面的代碼,你會認識到所選擇的前端從實際的鼠標端部位置偏移,而我居然把那麼就在一角。那麼爲什麼是抵消?哪裏不對?
我也意識到,定位裝置放置widget的西北角。
這個示例程序可以讓你選擇尖端一起玩,通過點擊其他尖,交換到它。
所以,你可以看到,通過選擇筆尖形狀,該行爲是相同的。
import tkinter as tk
def changetip(a): # change cursor tip, arg a is not used
global tipType
if tipType=="red" : tipType="yellow"
else: tipType="red"
def where(posn): #cursor tiop movement and colour change
cx=posn.x_root-w.winfo_x()
cy=posn.y_root-w.winfo_y()
if tipType=="red":
tipC.place(x=cx, y=cy)
tipL.place(x=300,y=300)
else:
tipC.place(x=400, y=400)
tipL.place(x=cx,y=cy)
w=tk.Tk()
w.geometry("500x500+100+100")
w.bind("<Motion>",where) #track mouse movement
tipType="red" # red is the canvas circle, yellow is label
# Make a cursor tip using a circle on canvas
tip_rad=10
tipC=tk.Canvas(w,width=tip_rad*2,height=tip_rad*2,highlightthickness=0,bg="green")
tip=tk.Canvas.create_oval(tipC,tip_rad/2,tip_rad/2,tip_rad/2*3,tip_rad/2*3, width=0, fill="red")
tipC.bind("<1>",changetip)
# Make a cursor tip using a label
tip_size=1
tipL=tk.Label(w,width=tip_size, height=tip_size,text="x",bg="yellow")
tipL.bind("<1>",changetip)
w.mainloop()
很好。效果很好。 – ffrree