如何 运行 通过列表循环内的变量? - python
How to run through a list a variables within a loop? - python
我正在从事解决数独游戏的项目。为了收集输入,我使用了一个名为“Tkinter”的 GUI,它有 81 个独立的输入(输入)框。我还有一个提交按钮。当我按下提交时,我想创建一系列包含单元格值、行和列等属性的对象。下面的代码执行此操作,但我必须复制并粘贴此代码 81 次,每次只将变量名称和位置调整一个(在提交函数内)。有什么方法可以创建一个循环,可以在更改变量名称的数字部分的同时将这些代码行迭代 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...)中检索数字的方式。
**位置只是我用来查找行和列信息的数字 (0-80)。
我能想到的最简单的方法是使用嵌套 for
循环来创建小部件并将它们网格化(顺便说一下 row
和 column
从 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()
我正在从事解决数独游戏的项目。为了收集输入,我使用了一个名为“Tkinter”的 GUI,它有 81 个独立的输入(输入)框。我还有一个提交按钮。当我按下提交时,我想创建一系列包含单元格值、行和列等属性的对象。下面的代码执行此操作,但我必须复制并粘贴此代码 81 次,每次只将变量名称和位置调整一个(在提交函数内)。有什么方法可以创建一个循环,可以在更改变量名称的数字部分的同时将这些代码行迭代 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...)中检索数字的方式。
**位置只是我用来查找行和列信息的数字 (0-80)。
我能想到的最简单的方法是使用嵌套 for
循环来创建小部件并将它们网格化(顺便说一下 row
和 column
从 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()