【问题标题】:How can I give identical buttons created in a loop unique names in Tkinter?如何在 Tkinter 中为循环中创建的相同按钮提供唯一名称?
【发布时间】:2021-04-15 02:45:18
【问题描述】:

我使用循环在框架内创建了 3 个空白按钮(因此我可以使用尺寸而不是高度和宽度使它们具有精确的大小)在一个更大的框架内,将它们组织成一个网格。这些按钮都显示正常,但稍后在程序中我想单独更改文本,但因为它们没有唯一的名称,我无法使用 config. 下面是按钮创建代码:

frameNames = ["A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "C1", "C2", "C3", "C4"]
while buttonNumber <= 11:
        frameN = frameNames[buttonNumber]
        frame = tkinter.Frame(buttonFrame, width=100, height=100)
        frame.rowconfigure(0, weight=1)
        frame.columnconfigure(0, weight=1)
        frame.grid_propagate(0)
        if "A" in frameN:
            frame.grid(row = 0)
        elif "B" in frameN:
            frame.grid(row = 1)
        elif "C" in frameN:
            frame.grid(row = 2)
        if "1" in frameN:
            frame.grid(column = 0)
        elif "2" in frameN:
            frame.grid(column = 1)
        elif "3" in frameN:
            frame.grid(column = 2)
        elif "4" in frameN:
            frame.grid(column = 3)
        frame.grid(padx = 25, pady = 25)
        button = tkinter.Button(frame, text = " ", bg = "Blue").grid(sticky="nsew")
        buttonNumber += 1
    
    window.mainloop()

如果您需要更多信息,请告诉我 谢谢

【问题讨论】:

标签: python tkinter button names


【解决方案1】:

您可以使用字典来存储创建的按钮并使用单元格位置或名称(来自frameNames)作为键:

frameNames = ["A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "C1", "C2", "C3", "C4"]
buttons = {}  # dictionary to hold the buttons
for name in frameNames:
    row = ord(name[0]) - ord("A")
    col = int(name[1]) - 1
    frame = tk.Frame(buttonFrame, width=100, height=100)
    frame.grid(row=row, column=col, padx=25, pady=25)
    btn = tk.Button(frame, bg="blue")
    btn.place(relwidth=1, relheight=1)
    buttons[row,col] = btn  # or buttons[name] = btn

然后您可以使用键 row,col 访问特定按钮,例如buttons[0,0].

【讨论】:

  • 我需要一段时间才能有机会对此进行测试,但这个解决方案似乎很完美。感谢您的帮助
  • 嗨,我只是想知道我需要使用什么名称来引用每个按钮?我应该去 A1.config、button{A1}.config 等吗?
  • 如果您使用来自frameNames 的名称作为buttons 中的键,则使用buttons["A1"].config(...)
猜你喜欢
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2021-02-16
  • 2021-07-05
  • 1970-01-01
  • 2013-01-27
  • 2018-09-10
  • 1970-01-01
相关资源
最近更新 更多