首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪鼠标移动的tkinter小部件

跟踪鼠标移动的tkinter小部件
EN

Stack Overflow用户
提问于 2017-06-14 11:23:59
回答 0查看 2.1K关注 0票数 1

我试着用一个红色的圆圈或者黄色的"X“标签来改变鼠标提示。

我使用了一个"where“函数,它捕获鼠标的移动,并提供给我鼠标提示的当前位置,因此请将上面的提示之一,即红色圆圈或黄色标签放在安装提示位置。

我意识到,如果将它们放在鼠标尖端,并不是很理想,因为它会掩盖底层的窗口小部件,但让我们把它放在一边。

使用以下代码,您将意识到所选的提示是从实际的鼠标提示偏移的,而我实际上将then放在了提示的右边。那么为什么偏移量是呢?怎么啦?

我也意识到,放置意味着放置小部件的nw角。

这个示例程序可以让您选择要玩的提示,通过单击另一个提示来切换到它。

因此,您可以看到,通过选择任一尖端形状,行为都是相同的。

代码语言:javascript
复制
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()
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44534868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档