2016-03-03 102 views
0

我目前正在用TkInter制作一个GUI,GUI由构建在for循环中的网格组成,其中1个变量用于所有按钮(它在每个循环都得到更新)。 我想知道如何获得我按下的任何按钮的坐标。 (例如,当我按下时,按钮在网格上给出它的坐标)我使用了grid_info,但它只获取了最后一个创建的按钮的信息。 感谢您的帮助:)TkInter网格上的按钮坐标

回答

2

您可以将行和列传递给与该函数关联的命令。最常用的两种方法是使用lambda或functools.partial。

下面是使用lambda一个例子:

import tkinter as tk 

def click(row, col): 
    label.configure(text="you clicked row %s column %s" % (row, col)) 

root = tk.Tk() 
for row in range(10): 
    for col in range(10): 
     button = tk.Button(root, text="%s,%s" % (row, col), 
          command=lambda row=row, col=col: click(row, col)) 
     button.grid(row=row, column=col, sticky="nsew") 
label = tk.Label(root, text="") 
label.grid(row=10, column=0, columnspan=10, sticky="new") 

root.grid_rowconfigure(10, weight=1) 
root.grid_columnconfigure(10, weight=1) 

root.mainloop()