gpt4 book ai didi

python - 删除小部件(涉及tkinter模块)

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:38 26 4
gpt4 key购买 nike

这里是新人,我正在慢慢掌握 python 的窍门,但我有一个问题。

我这里有两个文件

其中一个名为first_file.py

from other_file import GameFrame
from Tkinter import Tk

def main():
tk = Tk()
tk.title("Game of Life Simulator")
tk.geometry("380x580")
GameFrame(tk)
tk.mainloop()
main()

另一个是 other_file.py

from Tkinter import *
from tkFileDialog import *

class GameFrame (Frame):
def __init__(self, root):
Frame.__init__(self,root)
self.grid()
self.mychosenattribute=8
self.create_widgets()

def create_widgets(self):
for rows in range(1,21):
for columns in range(1,21):
self.columns = columns
self.rows = rows
self.cell = Button(self, text='X')
self.cell.bind("<Button-1>", self.toggle)
self.cell.grid(row=self.rows, column=self.columns)

reset = Button(self, text="Reset")
reset.bind("<Button-1>", self.reset_button)
reset.grid(row=22, column = 3, columnspan=5)

def reset_button(self, event):
self.cell.destroy()
for rows in range(1,21):
for columns in range(1,21):
self.columns = columns
self.rows = rows
self.cell = Button(self, text='')
self.cell.bind("<Button-1>", self.toggle)
self.cell.grid(row=self.rows, column=self.columns)

在我按下重置按钮后,现在发生的情况是一个按钮被销毁,另一组按钮在已经存在的按钮之上创建,但我需要能够销毁或至少将所有按钮配置为空白。那么,既然我使用了 for 循环来生成所有按钮,那么我该如何对它们执行此操作呢? (除了使用 for 循环之外,还有更好的方法来生成按钮吗?)谢谢。

最佳答案

一种常见的方法是将对象保存在列表(或字典)中,以便在需要时访问它们。一个简单的例子:

self.mybuttons = defaultdict(list)
for rows in range(1,21):
for columns in range(1,21):
self.mybuttons[rows].append(Button(self, text=''))

然后你可以这样获取按钮:

abutton = self.mybuttons[arow][acolumn]

您的代码存在一些问题,导致无法运行(reset 行的缩进以及使用未定义的 self.toggle),因此我无法修复可以,但是这个例子应该足以让你做到这一点。

关于python - 删除小部件(涉及tkinter模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com