点击时获取tkinter按钮在网格中的行

5 浏览
0 Comments

点击时获取tkinter按钮在网格中的行

我正在编写一个简单的tkinter小部件,它包括一列输入框和一列按钮。按钮应该打印相应输入框中的值。我已经写好了所有的代码,但是我在函数中硬编码了行标签:print find_in_grid(root, 2, 0).get()。我需要用点击的按钮所在的行替换掉2。如何获取这一行?

完整的代码如下:

from Tkinter import *
def print_value():
    print find_in_grid(root, 2, 0).get()
def find_in_grid(frame, row, column):
    for children in frame.children.values():
        info = children.grid_info()
        # 注意行和列的编号存储为字符串
        if info['row'] == str(row) and info['column'] == str(column):
            return children
    return None
root = Tk()
height = 5
width = 1
for i in range(height): # 行
    for j in range(width): # 列
        b = Entry(root, text="", width=100)
        b.grid(row=i, column=j)
height = 5
width = 1
for i in range(height): # 行
    for j in range(width): # 列
        b = Button(root, text="打印值", command=print_value, width=10)
        b.grid(row=i, column=j+1)
mainloop()

0