【问题标题】:what is the difference between event.x,event.y and event.x_root,event.y_root in tkinter?tkinter 中的 event.x,event.y 和 event.x_root,event.y_root 有什么区别?
【发布时间】:2021-06-27 15:01:25
【问题描述】:
import tkinter as tk
from tkinter import ttk
win=tk.Tk()
def get_event(event):
     print(f"{event.x} {event.y}")
win.bind("<Button-3>",get_event)
win.mainloop()

我在 tkinter 中制作右键菜单,但是当我编写 event.x 和 event.y 时:

import tkinter as tk
from tkinter import ttk
win=tk.Tk()
menu=tk.Menu(win,tearoff=False)
menu.add_command(label="Nothing...")
def popup(event):
     menu.tk_popup(event.x,event.y)
win.bind("<Button-3>",popup)
win.mainloop()

菜单溢出窗口 但是当我在 menu.tk_popup 中写 event.x_root 和 event.y_root 时,它没有

【问题讨论】:

  • event.x_root 是鼠标在屏幕上的绝对位置。 event.x 是鼠标相对于小部件的位置。因此,当您单击小部件的最左侧时,event.x 将为 0。当您单击屏幕的最左侧时(假设它触发了一个事件),event.x_root 将为 0。
  • 区别在Events and Bindings事件对象部分描述。
  • 非常感谢

标签: python user-interface tkinter menu


【解决方案1】:

当你使用event中的xy属性时,它指的是鼠标在事件发生时的x/y坐标,相对于widget。

但是当你从event使用x_rooty_root时,它指的是鼠标在事件发生时的x/y坐标,相对于屏幕的左上角。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多