检查标签是否在网格管理器中

时间:2016-12-27 12:24:48

标签: python tkinter

我正在寻找一种在Python Tkinter网格中检测我当前可见标签的方法。我在谈论

L=Label(someFrame)
L1=Label(someFrame)
L.grid(row=1,column=1)
L1.grid(row=2,column=1)
L1.grid_remove()

无论如何将L1与L区分开来?我正在寻找Tkinter的东西,而不是自己管理列表。可能访问网格管理器并查看是否有标签?

1 个答案:

答案 0 :(得分:2)

您可以使用grid_info()进行检查。如果小部件不在网格中,则grid_info()将是一个空白字典,其布尔值为False

示例:

import tkinter as tk

root = tk.Tk()
label1 = tk.Label(root)
label1.grid(row=0, column=0)
label2 = tk.Label(root)
label2.grid(row=1, column=1)
print(label1.grid_info())
print(label2.grid_info())
label2.grid_remove()
print(label1.grid_info())
print(label2.grid_info())

输出:

{'rowspan': 1, 'ipadx': 0, 'column': 0, 'sticky': '', 'pady': 0, 'columnspan': 1, 'in': <tkinter.Tk object at 0x0000000003411C88>, 'row': 0, 'ipady': 0, 'padx': 0}
{'rowspan': 1, 'ipadx': 0, 'column': 1, 'sticky': '', 'pady': 0, 'columnspan': 1, 'in': <tkinter.Tk object at 0x0000000003411C88>, 'row': 1, 'ipady': 0, 'padx': 0}
{'rowspan': 1, 'ipadx': 0, 'column': 0, 'sticky': '', 'pady': 0, 'columnspan': 1, 'in': <tkinter.Tk object at 0x0000000003411C88>, 'row': 0, 'ipady': 0, 'padx': 0}
{}