首页 文章

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

提问于
浏览
0

(我正在使用Python 3.5 . )
我创建了一个5x5网格,并希望从某个行/ colomn获取输入 .
我've never used tkinter before and I'是编程新手 .

我创建了show按钮,所以每次用户按下它时,我都希望输入打印 . 问题是,由于我的两个for循环,它只打印出最后一个元素44,因为's when the loop'已完成 .
如何在不更改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 回答

  • 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()
    

相关问题