2016-03-04 93 views
0

我正在與Tkinter的一個程序,我需要「的範圍內我」循環使用,以創建81個文本部件命名,如:的Python的Tkinter創建循環按鈕和編輯它們的參數

文本1 文本2 文本3 ...

,並在方處理他們(實際上是做了一個9 * 9尺寸的數獨遊戲燒烤)。創建這些81個文本小部件後,我需要將它們放入(使用.place())並輸入它們的位置參數。 在此之後,我將需要收集用戶在這些文本小部件中輸入的值。

我是一個新手,我不知道如何編碼。 這是我的實際代碼,但問題是一旦創建了dictionnary,我無法修改這些參數,並且我不知道如何訪問Text Widgets參數。也許使用一個詞典並不是我想做的事情的適當解決方案。

d = {} 
Ypos = 100 

for i in range(9):   
     Xpos = 100 
    for j in range(9):    
     d["Text{0}".format(i)]= Text(window, height=1, width=1,relief = FLAT,font=("Calibri",16)) 
     d["Text{0}".format(i)].place(x = Xpos+,y = Ypos) 
     Xpos += 35 
    yPos += 35 

感謝您的幫助

+0

修改參數是不是包含在您的要求。你爲什麼想這樣做? – Goyo

回答

0

不要使用複雜的密鑰字典,它使代碼更復雜,不添加任何好處。

由於您正在創建網格,因此請使用rowcolumn而不是ij。這會讓你的代碼更易於理解。另外,如果您正在創建網格,請不要使用地點。 Tkinter擁有專門用於創建網格的幾何管理器。

由於您正在創建高度爲一行的文本小部件,因此使用條目小部件更有意義。

下面是一個例子:

import Tkinter as tk 

root = tk.Tk() 
d = {} 

window = tk.Frame(root, borderwidth=2, relief="groove") 
window.pack(fill="both", expand=True) 

for row in range(9): 
    for column in range(9): 
     entry = tk.Entry(window, width=1, relief="flat", font=("Calibri",16)) 
     entry.grid(row=row, column=column, sticky="nsew") 
     d[(row,column)] = entry 

root.mainloop() 

當你需要訪問一個單元格中的數據,可以用輕鬆的行和列:

value = d[(3,4)].get() 
print("row 3, column 4 = %s" % value) 
+0

謝謝,你的幫助對我來說非常有用! –