Python Tkinter 使用按下按钮的文本创建标签
Python Tkinter create label with text of pressed button
这是我第一次 post 来这里,希望我做对了!
因此,对于我的项目,我创建了一组按钮,每当按下一个按钮时,我希望它的按钮文本显示在新创建的标签上。
虽然这看起来相当简单,但要让它发挥作用我遇到了很多困难。这是代码:
a=0
def label(t):
nonlocal a
l = tk.Label(self.parent, text=str(t))
l.grid(row=1, column=a)
a += 1
r=0
for components in array:
button = tk.Button(self.parent, text=str(array[r]), command=lambda:
label(array[r]))
button.grid(row=0, column=r, padx=5, pady=5)
r+=1
如您所见,我使用 for 子句遍历数组来创建按钮。现在的问题是,按钮命令分配似乎有点动态(?),意思是,每当我按下任何按钮时,它总是会显示最后创建的按钮的标签文本,因为这是对应于变量 r。
例如,如果数组包含 5 个元素 A、B、C、D、E,则将创建 5 个按钮。但是当我按其中任何一个时,它总是会显示 E.
我希望你们理解我的问题,也许知道解决它的方法或以更好的方式实现这个机制。请不要,我还处于编程的最初阶段:)
谢谢并致以最诚挚的问候!
试试这个:
button = tk.Button(self.parent, text=str(array[r]), command=lambda arg=array[r]: label(arg))
这将数组中的位置与更改前的 lambda 函数相关联。
让我知道这是否适合你:)
这是我第一次 post 来这里,希望我做对了! 因此,对于我的项目,我创建了一组按钮,每当按下一个按钮时,我希望它的按钮文本显示在新创建的标签上。 虽然这看起来相当简单,但要让它发挥作用我遇到了很多困难。这是代码:
a=0
def label(t):
nonlocal a
l = tk.Label(self.parent, text=str(t))
l.grid(row=1, column=a)
a += 1
r=0
for components in array:
button = tk.Button(self.parent, text=str(array[r]), command=lambda:
label(array[r]))
button.grid(row=0, column=r, padx=5, pady=5)
r+=1
如您所见,我使用 for 子句遍历数组来创建按钮。现在的问题是,按钮命令分配似乎有点动态(?),意思是,每当我按下任何按钮时,它总是会显示最后创建的按钮的标签文本,因为这是对应于变量 r。 例如,如果数组包含 5 个元素 A、B、C、D、E,则将创建 5 个按钮。但是当我按其中任何一个时,它总是会显示 E.
我希望你们理解我的问题,也许知道解决它的方法或以更好的方式实现这个机制。请不要,我还处于编程的最初阶段:)
谢谢并致以最诚挚的问候!
试试这个:
button = tk.Button(self.parent, text=str(array[r]), command=lambda arg=array[r]: label(arg))
这将数组中的位置与更改前的 lambda 函数相关联。 让我知道这是否适合你:)