簡體   English   中英

當按下正確的按鈕時,我的 window 上的標簽沒有出現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM