簡體   English   中英

Python Tkinter 使用按下按鈕的文本創建 label

[英]Python Tkinter create label with text of pressed button

這是我在這里的第一篇文章,希望我做對了,所以對於我的項目,我創建了一組按鈕,並且每當按下一個按鈕時。 我希望它的按鈕文本顯示在新創建的 label 上,盡管這看起來很簡單。 我很難讓它工作:這是代碼:

 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 子句循環遍歷數組以創建按鈕。 現在的問題是,按鈕命令分配似乎有些動態(?),這意味着,每當我按下任何按鈕時,它總是會顯示最后一個按鈕創建的 label 文本,因為這是與變量 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))

這會將陣列中的 position 與更改前的 lambda function 相關聯。 讓我知道這是否適合你:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM