如何解决在 Python tkinter 应用程序中重新单击执行按钮时如何清除输出
我用 Python tkinter 包制作了一个简单的 GUI 应用程序。
该应用允许我们输入一些化学式,然后检查它是否存在。
但是,当我多次使用输入时,输出窗口中的历史结果是重叠的。这是一个例子。
代码也提供如下。
import tkinter as tk
root= tk.Tk()
root.title('Peak fitting assistant')
canvas1 = tk.Canvas(root,width = 400,height = 300,relief = 'raised')
canvas1.pack()
label1 = tk.Label(root,text='Check if the candidate ions make sense')
label1.config(font=('helvetica',14))
canvas1.create_window(200,25,window=label1)
label2 = tk.Label(root,text='Type the chemical formula:')
label2.config(font=('helvetica',10))
canvas1.create_window(200,100,window=label2)
entry1 = tk.Entry (root)
canvas1.create_window(200,140,window=entry1)
def formula_check():
s = entry1.get()
label3 = tk.Label(root,text= s + ' is:',font=('helvetica',10))
canvas1.create_window(200,210,window=label3)
label4 = tk.Label(root,text= out,9,'bold')) ## out is the result,the checking process is not relevant to the error here.
canvas1.create_window(200,230,window=label4)
button1 = tk.Button(text='Check',command=formula_check,bg='brown',fg='white',10,'bold'))
button1.pack()
canvas1.create_window(200,180,window=button1)
root.mainloop()
我尝试添加下面的句子,即,在出现重叠问题的情况下,在下一次执行之前销毁输出。
label3 = tk.Label(root)
label4 = tk.Label(root)
def formula_check():
global label3,label4
label3.destory()
label4.destory()
但是,它当时不起作用。我想咨询一下点击“检查”按钮时如何清除输出。
解决方法
好吧,您可以使用 .config
来配置文本。
label3 = Label(root,font=('helvetica',9,'bold')) # Create the label outside the function.
label3.pack()
def formula_check():
s = entry1.get()
label3.config(text=s) # This will change the text of the Label instead of overriding it by a new Label instance.
button1 = tk.Button(text='Check',command=formula_check)
button1.pack()
,
问题是您在预览窗口上创建了一个新的画布窗口,并且由于新窗口比以前小,您还看到了预览窗口。 解决此问题的一种方法是创建一个画布窗口,标记此窗口并更新其中的文本。
下面是代码在第 19 和 20 行创建窗口,并在第 25 和 28 行更新:
1 import tkinter as tk
2
3 root= tk.Tk()
4 root.title('Peak fitting assistant')
5
6 canvas1 = tk.Canvas(root,width = 400,height = 300,relief = 'raised')
7 canvas1.pack()
8
9 label1 = tk.Label(root,text='Check if the candidate ions make sense')
10 label1.config(font=('helvetica',14))
11 canvas1.create_window(200,25,window=label1)
12
13 label2 = tk.Label(root,text='Type the chemical formula:')
14 label2.config(font=('helvetica',10))
15 canvas1.create_window(200,100,window=label2)
16
17 entry1 = tk.Entry (root)
18 canvas1.create_window(200,140,window=entry1)
19 canvas1.create_window(198,210,tags=('some_tag_here'))
20 canvas1.create_window(200,230,tags=('other_tag_here'))
21
22 def formula_check():
23 s = entry1.get()
24 label3 = tk.Label(root,text= s + ' is:',10))
25 canvas1.itemconfigure('some_tag_here',window=label3)
26
27 label4 = tk.Label(root,text= out,'bold')) ## out is the result,the checking process is not relevant to the error here.
28 canvas1.itemconfigure('other_tag_here',window=label4)
29
30 button1 = tk.Button(text='Check',command=formula_check,bg='brown',fg='white',10,'bold'))
31 button1.pack()
32 canvas1.create_window(200,180,window=button1)
33
34 root.mainloop()
PS:第 27 行的错误是因为你没有声明“out”变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。