[英]Is there any option to reset label after printing it ? [Python, Tkinter]
這是我的代碼
from tkinter import *
root = Tk()
root.title("MyTitle")
root.iconbitmap("icon.ico")
root.geometry("800x800")
c = []
feature1 = IntVar()
feature1.set(0)
feature2 = IntVar()
feature2.set(0)
feature3 = IntVar()
feature3.set(0)
Checkbutton(root, text="Pizza", variable=feature1).pack()
Checkbutton(root, text="Hamburger", variable=feature2).pack()
Checkbutton(root, text="Cola", variable=feature3).pack()
adej = "You've ordered"
def receipt():
global c, adej
if feature1.get() == 1:
c.append("Pizza")
if feature2.get() == 1:
c.append("Hamburger")
if feature3.get() == 1:
c.append("Cola")
adej = "You've ordered"
for x in c:
adej = adej + " " + x
Label(root, text=adej).pack()
adej = ""
button1 = Button(root, text="Get Receipt", command=receipt)
button1.pack()
root.mainloop()
edit_1:我已經像這樣更改了代碼,但它仍然給我重復的答案,如 label。我所說的重復是例如,如果選中 box_1 和 box_2,它會返回給我選中 box_1 和 check box_2。 但是,如果我取消選中復選框 1 並單擊按鈕,它會返回給我復選框 1、復選框 2 和復選框 2(再次)。 這是更改后的代碼
from tkinter import *
root = Tk()
root.title("MyTitle")
root.iconbitmap("icon.ico")
root.geometry("800x800")
c = []
feature1 = IntVar()
feature1.set(0)
feature2 = IntVar()
feature2.set(0)
feature3 = IntVar()
feature3.set(0)
Checkbutton(root, text="Pizza", variable=feature1).pack()
Checkbutton(root, text="Hamburger", variable=feature2).pack()
Checkbutton(root, text="Cola", variable=feature3).pack()
adej = "You've ordered"
def receipt():
global c, adej
if feature1.get() == 1:
c.append("Pizza")
if feature2.get() == 1:
c.append("Hamburger")
if feature3.get() == 1:
c.append("Cola")
adej = "You've ordered"
for x in c:
adej = adej + " " + x
label1.config(text=adej)
button1 = Button(root, text="Get Receipt", command=receipt)
button1.pack()
label1 = Label(root, text="")
label1.pack()
root.mainloop()
edit2:感謝 Tim Roberts 先生的回答。 您可以在下面找到他的答案作為標記的解決方案。 與此同時,我已經用“StringVar”為這個項目找到了另一個解決方案。 這是我所做的更改后的工作代碼。
from tkinter import *
root = Tk()
root.title("MyTitle")
root.iconbitmap("icon.ico")
root.geometry("250x150")
# creating string variables that will be connected to check boxes
feature1 = StringVar()
feature2 = StringVar()
feature3 = StringVar()
# attaching variables to checkboxes
Checkbutton(root, text="Pizza", variable=feature1, onvalue="Pizza ", offvalue="").pack()
Checkbutton(root, text="Hamburger", variable=feature2, onvalue="Hamburger ", offvalue="").pack()
Checkbutton(root, text="Cola", variable=feature3, onvalue="Cola ", offvalue="").pack()
def receipt():
adej = "You've ordered "
if len(feature1.get()+feature2.get()+feature3.get()) == 0:
label1.config(text="You didn't order anything.")
else:
label1.config(text=adej + feature1.get() + feature2.get() + feature3.get())
button1 = Button(root, text="Get Receipt", command=receipt)
button1.pack()
label1 = Label(root, text="")
label1.pack()
root.mainloop()
c
不應該是全局的。 每次單擊按鈕時,您都需要從頭開始重建它。 adej
也不需要是全局的。
這行得通。 此外,刪除c
和adej
的全局定義。
def receipt():
c = []
if feature1.get() == 1:
c.append("Pizza")
if feature2.get() == 1:
c.append("Hamburger")
if feature3.get() == 1:
c.append("Cola")
adej = "You've ordered " + ' '.join(c)
label1.config(text=adej)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.