Introduction:
In today’s digital age, the speed of your internet connection plays a critical role in productivity and online experience. To help users easily measure their connection speed, I’ve developed a GUI-based Internet Speed Test using Python. This simple yet effective tool empowers users to monitor their network performance through an intuitive graphical interface.
Key Features:
- Easy-to-Use Interface: The GUI makes it user-friendly for people with minimal technical knowledge.
- Real-Time Speed Test: Measures download, upload, and ping speed in real time.
- Accurate Results: Uses reliable libraries like speedtest-cli to ensure precise measurements.
Cross-Platform Support: Works across multiple platforms (Windows, macOS, and Linux).
Python support Tkinter library/packages/module for implementing the GUI-based application/program/code.
The given below is the code for implementing the “GUI-Based Internet Speed Test” application/program:
The libraries/packages/modules used in this code are as follows:tkinter: This package is used for developing graphical user interfaces (GUIs) in python.
speedtest: This package is used to test network bandwidth using speedtest.net servers
Installation:
pip install tk
pip install speedtest-cli
Source Code:
from tkinter import *
from tkinter.ttk import Progressbar
import speedtest
import time
def animate_speed(speed_value, progress_bar, scaling_factor):
max_value = speed_value * scaling_factor
increment = max_value / 100
for i in range(int(max_value) + 1):
if i > 0.9 * max_value:
break
progress_bar['value'] = i
progress_bar.update()
time.sleep(0.02)
def check_speed():
st = speedtest.Speedtest()
download_speed = st.download() / 1000000
upload_speed = st.upload() / 1000000
ping = st.results.ping
download_label.config(text=f"Download Speed: {download_speed:.2f} Mbps")
upload_label.config(text=f"Upload Speed: {upload_speed:.2f} Mbps")
ping_label.config(text=f"Ping: {ping:.2f} ms")
animate_speed(download_speed, download_progress, 5)
animate_speed(upload_speed, upload_progress, 3)
animate_speed(ping, ping_progress, 2)
root = Tk()
root.title("Internet Speed Checker")
root.config(bg="#212121")
root.geometry("500x400")
root.resizable(False, False)
label1 = Label(root, text="Internet Speed Checker", font=(
"Helvetica", 30, "bold"), bg="#212121", fg="#ffffff")
label1.pack()
download_label = Label(root, font=("Helvetica", 16),
bg="#212121", fg="#ffffff")
download_label.pack(pady=10)
download_progress = Progressbar(
root, orient=HORIZONTAL, length=300, mode='determinate')
download_progress.pack(pady=10)
upload_label = Label(root, font=("Helvetica", 16), bg="#212121", fg="#ffffff")
upload_label.pack(pady=10)
upload_progress = Progressbar(
root, orient=HORIZONTAL, length=300, mode='determinate')
upload_progress.pack(pady=10)
ping_label = Label(root, font=("Helvetica", 16), bg="#212121", fg="#ffffff")
ping_label.pack(pady=10)
ping_progress = Progressbar(root, orient=HORIZONTAL,
length=300, mode='determinate')
ping_progress.pack(pady=10)
check_speed()
button_refresh = Button(root, text="Refresh", font=(
"Helvetica", 14, "bold"), bg="#03a9f4", fg="#ffffff", command=check_speed)
button_refresh.pack(pady=20)
root.mainloop()
By integrating Python’s tkinter library and the speedtest-cli module, this project demonstrates how easily we can build functional, user-friendly applications. Whether you’re a beginner or an experienced developer, this project offers great learning opportunities.
Top comments (0)