【问题标题】:create multiple Buttons in python in one function [duplicate]在一个函数中在python中创建多个按钮[重复]
【发布时间】:2021-06-02 12:38:36
【问题描述】:

我正在为彩票应用程序创建一个 Gui。要应用它,我需要创建 49 个按钮。现在我想通过使用一个函数来创建我需要的按钮来让它更干净。我使用 tkinter。为了解决这个问题,我创建了一个范围为 1 和 49 的列表 namend 按钮。然后我使用了一个 for 循环:

for i in button:
     button_i = tkinter.Button(Fenster, text=i, bd=20 , command= lambda :[switch(button_i,i),zahl(i,button_i) , print(Spielerzahlen)])
     button_i.grid(row=y, column=z)
     z = z + 1
     if z == 7:
            y += 1
            z = 0

现在的问题是,“switch”和“zahl”命令无法运行,因为我将按钮的名称绑定为参数。如何在按钮名称中获取元素 i,以便按钮名称在每一轮都发生变化?

谢谢。

真诚的

Detek001

【问题讨论】:

  • command=lambda: ... 更改为 command=lambda i=i: ...

标签: python-3.x tkinter button


【解决方案1】:

您需要的是“闭包”,您可能想了解一下: https://www.programiz.com/python-programming/closure

这是一个最小的工作示例:


import tkinter
from tkinter import *


Fenster = Tk()


def closure(i):
    return lambda :print(i)

for i in range(49):
    button_i = tkinter.Button(Fenster, text=i, command=closure(i))
    button_i.grid(row=i%7,column=i//7)

Fenster.mainloop()

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2018-10-06
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多