Tkinter的;从某个行/ colomn获取输入

时间:2015-11-18 11:25:52

标签: python input tkinter

(我使用的是Python 3.5。)
我创建了一个5x5网格,并希望从某个行/ colomn获取输入 我之前从未使用过tkinter,而且我是编程新手。

我创建了show按钮,因此每次用户按下它时,我都希望输入打印。问题在于,由于我的两个for循环,它只打印出最后一个元素44,因为循环结束时就是这样。
如何在不更改for循环的情况下获取所有输入?

sudoku = Tk()

def show_entry_fields():
    print(name[r][i].get())


i = 0  
for i in range(0,5):  
    for r in range(0,5)  
        name[r][i] = Entry(sudoku)  
        name[r][i].grid(row=r,column=i)  

Button(sodoku, text='Quit', command=sodoku.quit).grid(row=5, column=1)
Button(sodoku, text='Show', command=show_entry_fields).grid(row=5, column=2)
sodoku.mainloop()

1 个答案:

答案 0 :(得分:2)

  

将变量存储在2D列表或字典中

# dictionary style  
root = {0:Tk()}
n = 5
m = 5
size = (n,m)

for i in range(1,n+1):
    for j in range(1,m+1):
        root[i,j] = Entry(sudoku)
        root[i,j].grid(row = i, column = j)

我以前用字典来存储tkObject *(Frame,Grid等等)

确实,当你想获得所有对象或只是根,或者只是第一层的Frame时,它是有用的。

在这种情况下,当[0]是Tk实例时,root [1,*]将为您提供网格的第一行。

事实上,你也可以这样做:

 # list style
 root = Tk()
 grid = [[Entry(sudoku).grid(row=i,column=j) for i in range(5)] for j in range(5)]

我还没有测试过这段代码。所以,要小心。

<小时/> 测试一下:

import tkinter as tk
root = tk.Tk()
grid = [[tk.Entry().grid(row=i,column=j) for i in range(5)] for j in range(5)]
input()