(我使用的是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()
答案 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()