根据“ grid_location”方法,按钮有自己的坐标系吗?
问题内容:
我正在尝试在Tkinter中使用 Grid Geometry Manager中 的grid_location
方法,但看来我做错了。 __
这是我的代码:
from tkinter import *
root = Tk()
b=Button(root, text="00")
b.grid(row=0, column=0)
b2=Button(root, text="11")
b2.grid(row=1, column=1)
b3=Button(root, text="22")
b3.grid(row=2, column=2)
b4=Button(root, text="33")
b4.grid(row=3, column=3)
b5=Button(root, text="44")
b5.grid(row=4, column=4)
def mouse(event):
print(event.x, event.y)
print(root.grid_location(event.x, event.y))
root.bind("<Button-1>", mouse)
root.mainloop()
当我在“按钮”外部单击时,它可以工作,但是当我在任何“按钮”内部单击时,似乎每个按钮都有其自己的坐标系。因此,尽管代码中有每个按钮,但每个按钮都位于(0,0)单元格上,它们位于规则的网格中。
问题答案:
您正确地说每个按钮“都有自己的坐标系”。但是,更准确地说,event.x
和event.y
值相对于与事件关联的窗口小部件,而不是窗口小部件的父窗口或根窗口。
如果确实需要窗口小部件所在的行和列,则可以grid_info
用来获取与事件关联的窗口小部件的行和列。例如:
def mouse(event):
grid_info = event.widget.grid_info()
print("row:", grid_info["row"], "column:", grid_info["column"])