如何在循环中运行变量列表?-python



我正在做一个解决数独难题的项目。为了收集输入,我正在使用一个名为";Tkinter";具有81个单独的输入(输入(框。我还有一个提交按钮。当我按下submit时,我想创建一系列包含数组的对象,如单元格值、行和列。下面的代码可以做到这一点,但我必须复制并粘贴这段代码81次,每次只调整一个变量的名称和位置(在submit函数中(。有没有办法创建一个循环,在更改变量名的数字部分的同时,可以将这些代码行迭代81次?

class Cell:
def __init__(self,number,location):
self.number = number
self.row = (location // 9) + 1
self.column = (location % 9) + 1
def submit():
cell1 = Cell(c1.get(),0)
cell2 = Cell(c2.get(),1)
cell3 = Cell(c3.get(),2)
...

*.get((方法是在按下按钮后从输入框(称为c1、c2、c3…(中检索数字的方法。

**location只是一个数字(0-80(,我用它来查找行和列信息。

我能想到的最简单的方法是使用嵌套的for循环来创建小部件并对它们进行网格划分(顺便说一下,rowcolumn从0开始(,然后附加到一个列表中,以后可以从中引用它们。因此,当你按下按钮时,它会遍历该列表中的每个Entry,并调用它们的get方法(print是值(:

import tkinter as tk

def submit():
for e in entry_list:
print(e.get())

root = tk.Tk()
entry_list = []
for col in range(9):
for row in range(9):
entry = tk.Entry(root, width=2, font=('Calibri', 20))
entry.grid(row=row, column=col, sticky='news')
entry_list.append(entry)
btn = tk.Button(root, text='Submit', command=submit)
btn.grid(row=9, column=0, columnspan=9)
root.mainloop()

最新更新