python - 如何使用 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
解决方案
推荐阅读
- javascript - 如何将浮动验证添加到 Vue 路由器路径?
- three.js - threejs:如何围绕其局部轴执行对象旋转?
- python-3.x - 如何打开仅用于在 python 3 中追加的文件
- python - 在 Django 中的视图之间发送数据
- html - Laravel 5.8 显示另一个表的数据,如连接
- r - R GLM 函数省略数据
- active-directory - 收集 AAD 应用注册权限
- python - 熊猫:如何删除#DIV/0!熊猫数据框中“新”列中的NA值?
- python - 有没有办法将嵌套字典的值作为 numpy 数组转换为 pandas 数据帧
- jestjs - 用 jest.mock 模拟 aws-sdk-sns