gpt4 book ai didi

python - 删除网格元素 - Tkinter

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:45 24 4
gpt4 key购买 nike

我正在用 tkinter “实验”新事物(我是它的初学者),我制作了这个应用程序,显然只是为了好玩:

from tkinter import *

def text() :
if checking :
content.grid_forget()
else :
content = Label(root, text = txt.get()).grid(row = 3, column = 0)

def check() :
checking = True
text()

root = Tk()

txt = StringVar()
checking = False

bt1 = Button(root, text = "Print me!", command = text)
bt2 = Button(root, text = "Clear!", command = check)
txt1 = Entry(root, textvariable = txt)

row = 0
for i in [bt1, bt2, txt1] :
i.grid(row = row, column = 0)
row+=1

root.mainloop()

我的问题是,为什么“清除”按钮不起作用?

最佳答案

您的应用存在几个问题,您可能需要考虑重新考虑结构和小部件管理。请考虑阅读 ( http://effbot.org/tkinterbook/grid.htm ) 并查看 stackoverflow 上的其他帖子,并确保检查 @Bryan Oakley 过去和现在的评论。

正如他提到的,您正在使用局部变量,这可以通过将其声明为全局变量来轻松纠正,如下所示:

global variable_name

在您的代码中,

此外,当您将内容添加到根窗口时,您可能需要考虑重组内容(“标签”):来自:

content = Label(root, text = txt.get()).grid(row = 3, column = 0) 

至:

content = Label(root, text = txt.get())
content.grid(row = 3, column = 0)

如果您不确定发生了什么,请考虑将 print() 添加到您的代码中,这是一个快速片段:

def text() :
global content
print(root.grid_slaves())
if checking :
content = Label(root, text = txt.get())
content.grid(row = 3, column = 0)

您将立即看到每次单击“打印我”时,小部件都会添加到您的布局中。

布局的最佳实践 ( Best way to structure a tkinter application )

快速提示:

def text() :
print(checking)
if checking :
content.grid_forget()
else :
content = Label(root, text = txt.get()).grid(row = 3, column = 0)

def check() :
checking = True
text()

root = Tk()

txt = StringVar()
checking = False

检查总是错误的......你也可以考虑重新思考一些逻辑

关于python - 删除网格元素 - Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398807/

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