2016-12-27 99 views
1

我正在尋找一種方法來檢測我在Python Tkinter網格中當前可見的標籤。我在說檢查標籤是否在Grid Manager中

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

有沒有辦法將L1與L區分開?我正在尋找Tkinter的東西,而不是自己管理列表。可能訪問網格管理器並查看標籤是否存在?

+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} 
{} 
+1

完美 - 簡單,乾淨,我需要。 – kabanus