簡體   English   中英

在 tkinter python 中的循環下更新 Label

[英]Updating Label under loop in tkinter python

我有下面的代碼,它將在執行代碼時顯示文本“ Welcome! ”。 然后當您單擊Label時,它將顯示文本“ Test # ”,其中 # 是循環數。 然后當您單擊Label1時,它將顯示文本“測試”(停止循環)。

代碼:-

m_root = Tk()
m_root.wm_state('zoomed')
m_frame = Frame(m_root)
m_display = Label(m_frame)
labels = []
label = Label(m_root,text="Welcome!") #set your text
label.pack()
labels.append(label)


def label():
    global label_loop
    label_loop = 0
    while label_loop != 1:
        for txt in labels:
            txt.destroy()

        label = Label(m_root,text="Test " + str(label_loop)) #set your text
        label.pack()
        labels.append(label)
        label_loop += 2
        m_display.update()
        time.sleep(1)



def label1():
    global label_loop
    label_loop = 1

    for txt in labels:
        txt.destroy()

    label1 = Label(m_root,text="Testing") #set your text
    label1.pack()
    labels.append(label1)

m_display.pack()
m_frame.pack()
m_display.update()
m_menubar = Menu(m_root)
m_menubar.add_command(label="Label", command=label)
m_menubar.add_command(label="Label1", command=label1)
m_root.config(menu=m_menubar)
m_root.mainloop()

這是停止循環或具有動態標簽的好代碼嗎? 還是有更酷/智能/短的版本?

label_loop是一個簡單的 boolean state 的復雜實現,很難理解。 你可以這樣做:

def label():
    global keep_looping
    keep_looping = True
    loop_count = 0
    while keep_looping:
        for txt in labels:
            txt.destroy()

        label = Label(m_root,text="Test " + str(loop_count))
        label.pack()
        labels.append(label)
        loop_count = loop_count + 1
        m_display.update()
        time.sleep(1)

    for txt in labels:
        txt.destroy()
    label1 = Label(m_root,text="Testing")
    label1.pack()
    labels.append(label1)
    m_display.update()

def label1():
    global keep_looping
    keep_looping = False

請注意label1 function 如何將文本設置為“測試”:在label1 function 將keep_looping標志設置為 false 並且循環實際停止之后有一段時間。 在循環實際停止之前,不應出現文本“測試”。

此外,您還需要添加邏輯來處理嘗試多次執行label function 的情況。 現在,沒有什么能阻止用戶連續兩次選擇“標簽”菜單:可以運行多個循環。

此外,處理“關閉”按鈕:如果在循環運行時單擊“關閉”,則會出現令人討厭的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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