簡體   English   中英

如何讓 tkinter 上的按鈕運行循環功能?

[英]How can I make a button on tkinter run a function that loops?

我在這里有一個特定的問題:我有一個按鈕,按下該按鈕時,會運行一個基本上由循環組成的函數。

這是代碼的簡化版本:

from tkinter import *
from tkinter import ttk
root = Tk()

def loop():
    while True:

        print("loop") 

b = Button (root, text = "run", command = loop)
b.grid(row = 1, column = 1)

root.mainloop()

當然,循環運行良好。 但是,一旦開始運行,程序就無法繼續並再次執行mainloop() 這意味着 tkinter 窗口變得無響應。 在我的實際程序中,這使我無法退出循環並更改函數。

那么,如何更改代碼以使 tkinter 窗口再次響應?

調用after()的 tkinter 方法是您要在此處使用的方法。

這是它的一個示例,我已更改按鈕以切換跟蹤變量以模擬啟動和停止循環。

下面的代碼將首先檢查按鈕是否正在訪問循環,然后基本上打開或關閉。 然后有一個內置了after方法的循環來繼續循環,直到您再次按下按鈕。

import tkinter as tk


def loop(toggle=False):
    global tracking_var
    if toggle:
        if tracking_var:
            tracking_var = False
        else:
            tracking_var = True

    if tracking_var:
        print("loop")
        root.after(1000, loop)

root = tk.Tk()
tracking_var = False
tk.Button(root, text="run", command=lambda: loop(True)).pack()

root.mainloop()

暫無
暫無

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

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