Python Tkinter更改如何在不使用canvas / widgets的情况下更改光标?

时间:2020-04-27 10:33:11

标签: python tkinter cursor

我想更改鼠标在像素范围内时光标的外观,并且当鼠标超出该范围时,它将变为正常(我不要要使用画布/其他小部件“ cursor =“ kwarg)

from tkinter import*

root = Tk()
root.geometry('500x500+0+0')

def change_cursor(event):
    if event.x in range(450,500):
        #change how the cursor looks


root.bind('<B1-Motion>', change_cursor)
root.mainloop()

1 个答案:

答案 0 :(得分:0)

不幸的是,要做您想要做的唯一方法是使用root.config(cursor="cursor_name")"watch" cursor_name用于忙碌的游标,"" cursor_name用于普通游标。

您还需要将"<B1-Motion>"事件(鼠标拖动,按住鼠标左键)更改为"<Motion>"事件(鼠标移动,无需按任何鼠标按钮)。

当然,您需要将光标改回(else块)

这是固定代码:

from tkinter import*


root = Tk()
root.geometry("500x500+0+0")

def change_cursor(event):
    if event.x in range(450, 500):
        root.config(cursor="watch")
    else:
        root.config(cursor="")


root.bind("<Motion>", change_cursor)
root.mainloop()