2 回答

TA贡献1811条经验 获得超4个赞
Tkinter 中有可用的控制变量,可让您根据变量的内容控制小部件中显示的内容。
tk.StringVar (as used below)
tk.DoubleVar can hold a Float
tk.IntVar can hold an int
这些使您可以在不破坏和重新创建的情况下更改小部件的内容。您的问题是指将链接到 IntVars 的 CheckBoxes。
下面是显示每次单击按钮时增加计数的 Label 的代码。
import tkinter
from tkinter import *
class GUI:
def __init__(self):
self.window=Tk()
self.frame=Frame(self.window)
self.frame.grid()
# Define something to change on click.
self.count=0
# Create a StringVr to hold it.
self.label_text=StringVar()
# Link to a label
self.label_text.set("Count = "+str(self.count))
Label(self.frame, textvariable=self.label_text).grid()
Button(self.frame,text="Click", command=self.on_click).grid()
tkinter.mainloop()
def on_click(self):
# Update Count and the label on click
self.count+=1
self.label_text.set("Count = "+str(self.count))
GUI()
希望这可以帮助

TA贡献1853条经验 获得超9个赞
我还没有收到任何回复,但为了供大家参考,我又玩了一些,找到了答案:
import tkinter
from tkinter import *
class GUI:
def __init__(self):
self.window=Tk()
self.frame=Frame(self.window)
self.inner=Frame(self.window)
self.frame.grid()
self.inner.grid()
Button(self.frame,text="Click",command=self.clear).grid()
tkinter.mainloop()
def click(self):
self.inner=Frame(self.frame)
self.inner.grid()
Label(self.inner,text='Hello!').grid()
def clear(self):
self.inner.destroy()
self.click()
GUI()
我之前试图在函数中做所有事情,但发现最好的方法是在初始化函数中创建包含框架,然后路由按钮以销毁它们,然后在您希望按钮直接路由的函数中重新创建它们到。似乎一个小弯路解决了一切,不敢相信我花了几个小时寻找答案,然后自己找到了。希望其他人能发现这有帮助!
添加回答
举报