pythontkinter使用循环创建按钮并编辑其参数

2024-09-28 21:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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

谢谢你的帮助


Tags: 代码textin文本程序formatfor参数
1条回答
网友
1楼 · 发布于 2024-09-28 21:27:54

不要在字典中使用复杂的键,它会使代码更复杂而不会增加任何好处。在

因为您正在创建网格,所以使用row和{},而不是i和{}。这将使您的代码更易于理解。另外,如果要创建网格,请不要使用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()

无论何时需要访问单元格中的数据,都可以轻松使用行和列:

^{pr2}$

相关问题 更多 >