Python tkinter唯一按钮文本变量

问题描述 投票:-1回答:1

因此,我试图创建一个由9个按钮组成的网格,当按下这些按钮时,它们将显示其编号。但是我遇到了问题,当我按下一个按钮时,我最终将所有文本变量设置为相同的数字。如何为每个按钮创建唯一的textvariable

代码:

from tkinter import *

root = Tk()

# Initialise items
num = 0
buttons = []
buttons_string = StringVar()


# My button function
def buttons_selection(a):
    print(a)
    buttons[a][1].set(a)


# Buttons is a 2d list where I store the button and it's text variable in
for i in range(9):
    buttons.append([])
    buttons[i].append(0)
    buttons[i].append(buttons_string)

# These for loops create the buttons
for x in range(3):
    for y in range(3):

        buttons[num][0] = Button(root, command=lambda a=num: buttons_selection(a),
                                 textvariable=buttons[num][1],  height=2, width=5) .grid(row=y, column=x)
        num += 1

root.mainloop()

为了进一步说明,这是问题所在的行:

buttons[num][0] = Button(root, command=lambda a=num: buttons_selection(a),
                                 textvariable=buttons[num][1],  height=2, width=5) .grid(row=y, column=x)

我想让textvariable=buttons[num][1]唯一变量存储在按钮中或其他内容中。

python python-3.x tkinter
1个回答
0
投票

提出acw1668有效的建议。只需附加一个新的字符串变量就可以了

buttons[i].append(StringVar())
© www.soinside.com 2019 - 2024. All rights reserved.