【问题标题】:tkinter destroy button after click点击后 tkinter 销毁按钮
【发布时间】:2016-06-15 15:50:14
【问题描述】:

我为 Python 创建了一个 Hangman 游戏,我想为我的代码创建一个 GUI。我创建了 26 个按钮(字母表中的每个字母一个)。单击按钮后,我希望将其销毁。但我不知道如何定义要销毁的特定按钮。我试过用destroy()来点击函数,但它只是删除了最后一个按钮(z)。

from tkinter import *
import string
class LetterButtons:

    def __init__(self, master):
        self.master = master
        self.frame_let = Frame(master)
        self.frame_let.grid()
        alphabet = string.ascii_uppercase
        for l in alphabet:
            self.button = Button(self.frame_let, text=l, bg='orange', width=5,
                                 command=lambda idx=l: self.click(idx))
            self.button.grid()

    def click(self, idx):
        print(idx)
        # here is another function what handle "idx" variable



root = Tk()

lett = LetterButtons(root)

root.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    您可以将command 的分配分离到另一行,以便您可以将按钮小部件本身的引用传递给您的click() 函数:

    ...
        for l in alphabet:
            self.button = Button(self.frame_let, text=l, bg='orange', width=5)
            self.button['command'] = lambda idx=l, binst=self.button: self.click(idx, binst)
            self.button.grid()
    
    def click(self, idx, binst):
        print(idx)
        binst.destroy()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2013-08-08
      相关资源
      最近更新 更多