In this article, you’ll learn how to test the internet speed using python with and without GUI (Tkinter)
Prerequisites:
- Python Basics
- speedtest-cli module
Install Necessary Modules:
Open your Prompt and type and run the following command (individually):
pip install speedtest-cli
speedtest
-cli is a Python library that provides a Command-line interface for testing internet bandwidth using speedtest.net
Once Installed now we can import it inside our python code.
Source Code:
''' Python Program to Test internet speed ''' # Import the necessary module! import speedtest # Create an instance of Speedtest and call it st st = speedtest.Speedtest() # Fetch the download speed # Use of download method to fetch the speed and store in d_st download = st.download() # Fetch the upload speed # Use of upload method to fetch the speed and store in u_st upload = st.upload() # Converting into Mbps download = download/1000000 upload = upload/1000000 # Display the result print("Your ⏬ Download speed is", round(download, 3), 'Mbps') print("Your ⏫ Upload speed is", round(upload, 3), 'Mbps') # Fetch the ping st.get_servers([]) ping = st.results.ping # Display the result print("Your Ping is", ping)
Output:
Your ⏬ Download speed is 12.625 Mbps
Your ⏫ Upload speed is 18.225 Mbps
Your Ping is 8.219
Code language: CSS (css)
2) Python Program to Test internet speed using Tkinter GUI
''' Python Program to Test internet speed using Tkinter GUI ''' # Import the necessary modules! import speedtest from tkinter.ttk import * from tkinter import * import threading root = Tk() root.title("Test Internet Speed") root.geometry('380x260') root.resizable(False, False) root.configure(bg="#ffffff") root.iconbitmap('speed.ico') # design Label Label(root, text ='TEST INTERNET SPEED', bg='#ffffff', fg='#404042', font = 'arial 23 bold').pack() Label(root, text ='by @ProgramSolve.com', bg='#fff', fg='#404042', font = 'arial 15 bold').pack(side =BOTTOM) # making label for show internet speed down_label = Label(root, text="⏬ Download Speed - ", bg='#fff', font = 'arial 10 bold') down_label.place(x = 90, y= 50) up_label = Label(root, text="⏫ Upload Speed - ", bg='#fff', font = 'arial 10 bold') up_label.place(x = 90, y= 80) ping_label = Label(root, text="Your Ping - ", bg='#fff', font = 'arial 10 bold') ping_label.place(x = 90, y= 110) # function for check speed def check_speed(): global download_speed, upload_speed speed_test= speedtest.Speedtest() download= speed_test.download() upload = speed_test.upload() download_speed = round(download / (10 ** 6), 2) upload_speed = round(upload / (10 ** 6), 2) # function for progress bar and update text def update_text(): thread=threading.Thread(target=check_speed, args=()) thread.start() progress=Progressbar(root, orient=HORIZONTAL, length=210, mode='indeterminate') progress.place(x = 85, y = 140) progress.start() while thread.is_alive(): root.update() pass down_label.config(text="⏬ Download Speed - "+str(download_speed)+"Mbps") up_label.config(text="⏫ Upload Speed - "+str(upload_speed)+"Mbps") # Fetch the ping st.get_servers([]) ping = st.results.ping ping_label.config(text="Your Ping is - "+str(ping)) progress.stop() progress.destroy() # button for call to function button = Button(root, text="Check Speed ▶", width=30, bd = 0, bg = '#404042', fg='#fff', pady = 5, command=update_text) button.place(x=85, y = 170) root.mainloop()
Output:
