当通过命令制作时,如何更改按钮的列?
How do I change the column of Buttons, when being made by command?
我正在从命令列表中创建按钮,我想知道如何才能在一定数量的按钮后开始在不同的列上创建按钮?
例如:
list = [1,2,3,4,5,6,7,8,9,10]
def func(number):
some_function()
for number in list:
button = Button(root, text=number, command=lambda x=number: func(x))
button.grid()
所以在做了 5 个按钮之后,我想知道我是否可以继续在第二列上制作按钮?
在尝试找到答案后我没有成功,非常感谢您的帮助。
您可以使用列表中项目的索引和 divmod()
函数来计算行和列。另外最好不要使用关键字 list
作为变量名。
# don't use keyword list as variable name
itemlist = [1,2,3,4,5,6,7,8,9,10]
def func(number):
some_function()
for idx, number in enumerate(itemlist):
col, row = divmod(idx, 5) # change 5 to other value to suit your case
button = Button(root, text=number, command=lambda x=number: func(x))
button.grid(row=row, column=col)
我正在从命令列表中创建按钮,我想知道如何才能在一定数量的按钮后开始在不同的列上创建按钮?
例如:
list = [1,2,3,4,5,6,7,8,9,10]
def func(number):
some_function()
for number in list:
button = Button(root, text=number, command=lambda x=number: func(x))
button.grid()
所以在做了 5 个按钮之后,我想知道我是否可以继续在第二列上制作按钮?
在尝试找到答案后我没有成功,非常感谢您的帮助。
您可以使用列表中项目的索引和 divmod()
函数来计算行和列。另外最好不要使用关键字 list
作为变量名。
# don't use keyword list as variable name
itemlist = [1,2,3,4,5,6,7,8,9,10]
def func(number):
some_function()
for idx, number in enumerate(itemlist):
col, row = divmod(idx, 5) # change 5 to other value to suit your case
button = Button(root, text=number, command=lambda x=number: func(x))
button.grid(row=row, column=col)