【问题标题】:multiple buttons in one line of code in tkintertkinter 中一行代码中的多个按钮
【发布时间】:2020-01-24 17:38:33
【问题描述】:

我需要在 Tkinter 中创建 200 个复选按钮,因为我正在创建一个座位选择屏幕。有没有一种方法可以创建所有这些按钮,而不必像在 pygame 中那样逐行输入它们?到目前为止,我已经尝试过了,但它似乎不起作用。 (我不是一个超级聪明的程序员,所以这可能是一个愚蠢的错误)。


root = tk.Tk()

frame1 = tk.Frame(root)
frame1.pack(side=tk.TOP, fill=tk.X)
button = list()
for i in range(4):
button.append(tk.Button(frame1, image=karirano, command=partial(klik, i)))
    button[-1].grid(row=0,column=i)
root.mainloop()```

【问题讨论】:

  • 你的意思是"like in pygame" ?它还需要一些循环来创建按钮。
  • 为什么你认为上面的行不通?它在做什么与您的预期不同(除了崩溃,因为您还没有定义klik)?当然可以在循环中创建小部件。 tkinter 小部件并没有什么特别之处——它们只是 python 类。

标签: python button tkinter


【解决方案1】:

是的,您可以循环创建按钮。如果我在做一个座位表,我会先用一个简单的数据结构来定义它的样子,这样你就可以轻松地可视化布局。

例如:

rows = {
    "a": "  xxxx xxxxxxxx xxxx",
    "b": "xxxxxx xxxxxxxx xxxxxx",
    "c": "xxxxxx xxxxxxxx xxxxxx",
}

然后您可以遍历这些数据,在任何有“x”的地方放置一个座位。

例如:

for row_number, row_letter in enumerate(rows.keys()):
    for seat_number, c in enumerate(rows[row_letter]):
        if c == "x":
            seat = tk.Button(frame1, ...)
            seat.grid(row=row_number, column=seat_number)

【讨论】:

    【解决方案2】:

    看来这只是一个语法错误,代码按照我现在想要的方式运行。

    【讨论】:

    • 尽管您已经解决了问题,但您还应该在答案中发布代码。因此,我建议在您开始投反对票之前将代码包含在您的答案中并进行编辑。
    • 问题中的代码有效,因为它是我的代码前面的语法错误
    猜你喜欢
    • 2017-06-19
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多