[英]The Labels on my window don't appear when the correct button is pressed
我在 python (Tkinter) 中做了一個測驗。 出於某種原因,當我按下一個按鈕時,我沒有顯示 label。我沒有關於此的更多信息,因為它甚至沒有給我錯誤消息。
這是(錯誤的)代碼:
from random import *
def submit():
ca = 0
ca = randint(1, 3)
if ca == 1:
if val1 == 1:
score = Label(winroot, text="1 is Correct")
score.pack()
if ca == 2:
if val2 == 1:
score = Label(winroot, text="2 is Correct")
score.pack()
if ca == 3:
if val3 == 1:
score = Label(winroot, text="3 is Correct")
score.pack()
win = Tk()
win.title("ziqp Quiz")
winroot = Frame(win)
winroot.pack()
question = Label(winroot, width=60, font=(10), text="Q")
question.pack()
val1 = IntVar()
val2 = IntVar()
val3 = IntVar()
option1 = Checkbutton(winroot, variable=val1, text="1", command=submit)
option1.pack()
option2 = Checkbutton(winroot, variable=val2, text="2", command=submit)
option2.pack()
option3 = Checkbutton(winroot, variable=val3, text="3", command=submit)
option3.pack()
nextb = Button(winroot, text="Submit", command=submit)
nextb.pack()
win.mainloop()
您的代碼不完整。 但首先讓我震驚的是你有:
val1 = IntVar()
並在
def submit():
您正在檢查是否:
if val1 == 1:
但是 val1 是一個 IntVar Tkinter 變量,您可以檢查它:
val1.get()
在你的代碼中,你的條件總是失敗,因為val1
永遠不會等於1
,因為它是一個IntVar
所以,請記住,對於IntVar
(以及所有其他 Tkinter 變量),您使用.set()
進行分配並使用.get()
檢查,所以......
val2.set(1)
if val2.get() == 1:
print("Nice! They're equal!")
附錄:在您的情況下,由於您使用 IntVars 作為 Checkbutton 的變量,系統正在處理 IntVars 值的“設置”。 但是您仍然需要使用.get()
方法讀取它們的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.