簡體   English   中英

tk入口中跟蹤數據的ttk進度條

[英]Ttk progress bar for tracking data in tk entry

我一直在嘗試跟蹤 tk 條目是否為空......我現在有點困惑,如果 tk 庫中有更好的工具......這是一個示例代碼:

import threading
from tkinter import ttk
import tkinter as tk


class progress_track(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.ent1 = tk.Entry(self)
        self.ent1.pack()
        self.ent2 = tk.Entry(self)
        self.ent2.pack()
        self.b1 = tk.Button(self, text="Track", command=self.tracking)
        self.b1.pack()
        self.updatevar = tk.IntVar()
        self.p = ttk.Progressbar(self, variable=self.updatevar)
        self.p.pack()
        self.t = threading.Thread(target=self.track)

    def tracking(self):
        self.t.start()

    def track(self):
        while True:
            if self.ent1.get():
                # track here
                self.updatevar.set(self.updatevar.get() + 1)
            else:
                self.updatevar.set(self.updatevar.get() - 1)
            if not self.ent2.get():
                # track here
                self.updatevar.set(self.updatevar.get() + 1)
            else:
                self.updatevar.set(self.updatevar.get() - 1)


if __name__ == '__main__':
    root = progress_track()
    root.geometry('400x300')
    root.mainloop()

謝謝

我修好了...實際上很容易這是供將來參考的代碼:

import threading
import time
from tkinter import ttk
import tkinter as tk


class progress_track(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.ent1 = tk.Entry(self)
        self.ent1.pack()
        self.ent2 = tk.Entry(self)
        self.ent2.pack()
        self.b1 = tk.Button(self, text="Track", command=self.tracking)
        self.b1.pack()
        self.updatevar = tk.IntVar()
        self.p = ttk.Progressbar(self, variable=self.updatevar)
        self.p.pack()
        self.t = threading.Thread(target=self.track)

    def tracking(self):
        self.t.start()

    def track(self):
        flag1 = False
        self.p['maximum'] = 2
        flag2 = False
        while True:
            if self.ent1.get() and not flag1:
                self.updatevar.set(self.updatevar.get() + 1)
                flag1 = True
            elif not self.ent1.get() and flag1:
                self.updatevar.set(self.updatevar.get() - 1)
                flag1 = False
            if self.ent2.get() and not flag2:
                self.updatevar.set(self.updatevar.get() + 1)
                flag2 = True
            elif not self.ent2.get() and flag2:
                self.updatevar.set(self.updatevar.get() - 1)
                flag2 = False
            root.update_idletasks()
            time.sleep(0.2)


def on_closing():
    root.kill_threads = True
    time.sleep(0.1)
    root.destroy()


if __name__ == '__main__':
    root = progress_track()
    root.geometry('400x300')
    root.protocol('WM_DELETE_WINDOW', on_closing)
    root.mainloop()

暫無
暫無

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

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