2013-07-12 40 views
1

我是一個開始(強調)程序員,我正在創建一個學習GUI應用程序。我想爲術語和定義創建多個Entry字段。爲了創建一個輸入框中的代碼(我相信)將是:tkinter中的多個條目標籤

term = StringVar() 
term1 = Entry(root, textvariable = term) 
term1.grid(row=1, column=1) 

我的目標是能夠提示用戶,詢問他們有多少方面想。我的問題是,我必須運行什麼循環來自動創建一列輸入字段,特定於用戶輸入的數字?

回答

1

假設您已獲得用戶輸入x,一個整數。

for i in range(x): 
    Entry(root, textvariable=StringVar()).grid(row=1, column=i+1) 

但不幸的是,你不能獲得條目的價值。所以我們可以拿兩個名單。

variables = [] 
entries = [] 
for i in range(x): 
    va = StringVar() 
    en = Entry(root, textvariable=va) 
    en.grid(row=1, column=i+1) 
    variables.append(va) 
    entries.append(en) 

在這種情況下,您可以訪問條目和變量,然後使用列表。

然後,您可能需要在循環內指定名稱,例如entry1, entry2, entry3。這涉及到無法在Python中訪問的動態變量創建。有一種使用exec__dict__的黑客方式,但不推薦。只需使用列表或字典。

+0

謝謝,這可以產生輸入框。但是,當我有一個打印列表的按鈕(在終端上或通過消息框)時,我得到的就是列表中每個項的''之類的東西。我究竟做錯了什麼? –

+0

您應該使用'StringVar'的'.get()'方法來實現這些值。@ TylerJones – zhangyangyu