how to show function executing data in GUI?

72 Views Asked by At

My python application shows the internet speed but the function takes about 30 seconds to finish so how can I represent the sentences that it gives such as "loading server list ...." in a GUI like tkinter or kivy ?

enter image description here

1

There are 1 best solutions below

0
Hammad Zafar Bawara On

You can use tk.ProgressBar for displaying progress bar to user

pb = ttk.Progressbar(
    root,
    orient='horizontal',
    mode='determinate',
    length=280
)

Here is the full code you can use to display progress bar to user

from tkinter import ttk
import tkinter as tk
from tkinter.messagebox import showinfo
from threading import Thread

# root window
root = tk.Tk()
root.geometry('300x120')
root.title('Progressbar Demo')


def update_progress_label():
    return f"Current Progress: {pb['value']}%"


def progress():
    if pb['value'] < 100:
        pb['value'] += 1
        value_label['text'] = update_progress_label()
    else:
        showinfo(message='The progress completed!')


def stop():
    pb.stop()
    value_label['text'] = update_progress_label()


# progressbar
pb = ttk.Progressbar(
    root,
    orient='horizontal',
    mode='determinate',
    length=280
)
# place the progressbar
pb.grid(column=0, row=0, columnspan=2, padx=10, pady=20)

# label
value_label = ttk.Label(root, text=update_progress_label())
value_label.grid(column=0, row=1, columnspan=2)


from time import sleep
def update_progress_bar():

    # You can write here your own logic how do you want to update your code.

    for i in range(100):
        progress()
        sleep(1)
    # -----------------------------------------------------------------------

t1 = Thread(target=update_progress_bar)
t1.start()


root.mainloop()

I am updating progress bar by 1% after 1 second but you can update progress bar by putting your own code in method update_progress_bar(). if you want to show more information to user you can use Text Box.

SCREENSHOT