2016-01-09 38 views
0

的想法是讓所有的按鈕,標籤,輸入字段的信息......一個給定的窗口的樹視圖。 有了這個信息,可以關閉所有按鈕或隱藏名稱以「xx」開頭的所有輸入字段。以可視化的想法,最好的辦法將是一個樹形像:如何獲得在一個窗口中的所有對象 - 他們設置

\window 
    \Frame1 
     \button1(Name,x,y ...) 
     \button2(..) 
     \Frame2 

到現在爲止,我發現了信息

from tkinter import Button 
    b = Button() 
    for k in b.configure().keys(): 
      print (k, ':', b.cget(k)) 

    from tkinter import Listbox 
    li = Listbox() 
    for k in li.configure().keys(): 
      print (k, ':', li.cget(k)) 

但如何做一個迭代在一個窗口中的所有元素的真正最後一部分? 我沒有找到類似 typeof運算(按鈕)==真... 或typeof運算(對象) - >按鈕...

回答

3

您可以使用widget.winfo_children()獲得是直接後裔所有小工具的列表widget

考慮到窗口小部件的引用,你可以調用widget.keys()得到的一個小部件的所有配置選項的列表。您可以使用cget方法獲得該值(例如:widget.cget("background"))。

您可以使用winfo_class小部件(例如:widget.winfo_class())獲取小部件的內部tkinter類型或類。

+0

謝謝。我會盡力用你的提示來做。但是也許我必須回過頭來 – bertil

+0

這是我的代碼: for root.winfo_children(): print(「class():」,wc.winfo_class()) print(「parent():」 wc.winfo_parent()) 打印( 「名稱()」,STR(wc.winfo_name())) 打印( 「對象的全名:」 STR(WC)) 打印(「wc.winfo_id() (),「wc.winfo_id()) for wck in wc.configure()。keys(): print(wck,」:「,wc.cget(wck)) 看起來不錯,但我仍然需要真名的小工具 – bertil

+0

@bertil:你是什麼意思的「真名」?如果你想獲取指向該小部件的變量名稱,則無法獲取該信息。你可以很容易地擁有多個與widget相關的變量(或者根本沒有變量)。也就是說,你可以用'name'參數爲一個小部件指定一個名字,這個名字就是'winfo_name'將返回的名字(例如:'Label(root,name ='my label')' –

相關問題