0

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

Esra Issam
  • 17
  • 5

1 Answers1

0

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