Python 如何在tkinter中创建一组带有循环的按钮?

Python 如何在tkinter中创建一组带有循环的按钮?,python,tkinter,button,Python,Tkinter,Button,我有一个我正在尝试创建的程序,基本上我需要在tkinter中创建8行按钮 但是我想不出我怎么能用一个循环来完成这件事 ,没有循环,我这样做: def decimal(): app = Toplevel(root) app.title("Traducteur décimal") app.geometry("400x200") r1 = Button(app, text="LED 1 ON") r2 = Button(app, text=&

我有一个我正在尝试创建的程序,基本上我需要在tkinter中创建8行按钮 但是我想不出我怎么能用一个循环来完成这件事 ,没有循环,我这样做:

def decimal():
app = Toplevel(root)
app.title("Traducteur décimal")
app.geometry("400x200")
r1 = Button(app, text="LED 1 ON")
r2 = Button(app, text="LED 1 OFF")
r1.place(x=125,y=0)
r2.place(x=225,y=0)
r3 = Button(app, text="LED 2 ON")
r4 = Button(app, text="LED 2 OFF")
r3.place(x=125, y=40)
r4.place(x=225, y=40)
r5 = Button(app, text="LED 3 ON")
r6 = Button(app, text="LED 3 OFF")
r5.place(x=125, y=80)
r6.place(x=225, y=80)
顺便说一句,我很抱歉英语不好。
谢谢

一种方法是将它们全部放入一个
列表中,该列表包含
2元组
,并带有一个
for
循环。作为一个列表,您可以通过索引访问其元素:

按钮=[]
x_loc_on,x_loc_off=(125225)
y_开始=0
y_偏移=40
命令=[]
对于范围(8)中的行:
#基于行计算对的y位置
行的y位置=y开始+行*y偏移
#获取行号(与变量“row”不同,从1开始;因此添加1)
行数=行数+1
#生成打开按钮
按钮1=按钮(应用程序,文本=f“LED{row_number}ON”,命令=命令[行])
按钮1.放置(x=x\U loc\U on,y=y\U pos\U行)
#生成关闭按钮
按钮2=按钮(应用程序,文本=f“LED{row_number}关闭”,命令=命令[row+1])
按钮2.位置(x=x\U loc\U off,y=y\U pos\U行)
#将此行的开关按钮对作为2元组放入列表中
按钮。追加((按钮1,按钮2))

然后,您可以通过
按钮[i][0]
访问
i
第几行和
ON
按钮,通过
按钮[i][1]
访问同一行
关闭
按钮,我知道这在面向对象编程中是可能的,但我对iTunes
grid()
几乎没有经验,你会更快地得到一个更好的答案。谢谢,这确实有效,但是我怎样才能将文本修改成它呢?按钮仅显示LED 1点亮和LED 1OFF@Tahet是的,很抱歉。。现在已使用
f-string
修复。很抱歉,这听起来可能很愚蠢,但如何与这些新按钮交互?我需要输入命令参数them@Tahet不,一点也不愚蠢,但你能说得更具体些吗?你想让所有的按钮都有一个命令,还是每行一个命令,或者每个按钮一个命令,或者一个打开按钮的命令和一个关闭按钮的命令等等@Tahet我明白了;然后,您可以为所有按钮形成一个包含16个命令的列表。然后,由于
将从
0
变为
7
,我们可以在for循环的每一轮中使用
行+1
对该列表进行索引,以获取每个按钮的相应命令。编辑了答案。