首页 > 解决方案 > 如何使用 tkinter 销毁每个按钮?

问题描述

我的目标是创建一个游戏,该游戏显示一手牌,并为每一轮纸牌游戏创建每张牌的按钮。问题是程序创建了按钮,但从不删除它们,因此它们在轮次之间堆叠。我尝试在框架和每个单独的按钮上使用 winfo_children 的破坏功能。如何在每一轮之后最终清除按钮的主框架?我在下面复制了我的代码的相关部分。先感谢您。

class CardsFrame(Frame):
    def __init__(self, parent, hand):
        Frame.__init__(self,parent, width = 14)
        self.parent = root
        for card in hand:
            self.button = Button(self, text = card, width = 14)
            self.button.pack(side=BOTTOM)
    def killCards(self,parent):
        for widget in CardsFrame.winfo_children():
            widget.destroy()

def game():
    for widget in CardsFrame.winfo_children():
            widget.destroy()
    numCards = userInput.get()
    cardButtons = Frame(root)
    CardsFrame.killCards()
    if numCards.isdigit():
        if 0 <= int(numCards) <= 52:
            hand = deal(numCards)
            result1 = str(evaluate(hand))
            cardButtons = CardsFrame(root, hand)
            cardButtons.pack()
            for cards in hand:
                print('{0:5s}{1:18s}\n'.format(' ',cards), end='')
            print('{0:5s}{1:10s}{2:5s}{3:7s}\n'.format(' ', '---------> ', 'Score: ',result1, end=''))
        result = '{0:6s}{1:3s}'.format('Score: ', result1)
        result = Label(text = 'Score: ' + result1)
        score['text'] = 'Score: ' + result1

标签: pythonpython-3.xtkinter

解决方案


推荐阅读