我正在用Tkinter编写一个程序,在该程序中,我需要使用“ for i in range”循环,以创建81个像这样的文本小部件:
文字1文字2文字3 ...
并将它们放置在正方形中(实际上是为9 * 9尺寸的数独游戏制作一个烤架)。创建这81个文本小部件之后,我需要放置它们(使用.place())并输入其位置参数。之后,我将需要收集用户在这些文本小部件中输入的值。
我是新手,我真的不知道该如何编写代码。这是我的实际代码,但问题是创建字典后我无法修改参数,而且我不知道如何访问“文本小部件”参数。也许使用字典不是执行我想要的适当解决方案。
d = {}
Ypos = 100
for i in range(9):
Xpos = 100
for j in range(9):
d["Text{0}".format(i)]= Text(window, height=1, width=1,relief = FLAT,font=("Calibri",16))
d["Text{0}".format(i)].place(x = Xpos+,y = Ypos)
Xpos += 35
yPos += 35
感谢您的帮助
不要为字典使用复杂的键,它会使代码更复杂而不增加任何好处。
由于您正在创建网格,因此请使用row
和column
而不是i
和j
。这将使您的代码更容易理解。另外,如果要创建网格,请不要使用place。Tkinter具有专门用于创建网格的几何图形管理器。
由于您要创建高度为一行的文本小部件,因此使用输入小部件更为有意义。
这是一个例子:
import Tkinter as tk
root = tk.Tk()
d = {}
window = tk.Frame(root, borderwidth=2, relief="groove")
window.pack(fill="both", expand=True)
for row in range(9):
for column in range(9):
entry = tk.Entry(window, width=1, relief="flat", font=("Calibri",16))
entry.grid(row=row, column=column, sticky="nsew")
d[(row,column)] = entry
root.mainloop()
每当需要访问单元格中的数据时,都可以轻松使用行和列:
value = d[(3,4)].get()
print("row 3, column 4 = %s" % value)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句