-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspeed.py
163 lines (126 loc) · 6.08 KB
/
speed.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
import tkinter as tk
import speedtest
import threading
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import webbrowser
from PIL import Image, ImageTk
import requests
# Bağlantı durumu etiketini güncelleme
def update_connection_status(status):
connection_status_label.config(text=f"Bağlantı Durumu: {status}")
# Hız testi fonksiyonu
def run_speed_test():
try:
# Bağlantı durumu güncelle
update_connection_status("Bağlantı Test Ediliyor...")
# Progress bar'ı başlat
progress_bar.start()
# SpeedTest nesnesi oluşturuluyor
st = speedtest.Speedtest()
st.get_best_server() # En iyi sunucuyu seçiyor
# Ping, download ve upload hızlarını alıyoruz
ping = st.results.ping
download_speed = st.download() / 1_000_000 # Mbps cinsinden
upload_speed = st.upload() / 1_000_000 # Mbps cinsinden
# Sonuçları GUI'ye yazdırıyoruz
ping_label.config(text=f"Ping: {ping} ms")
download_label.config(text=f"İndirme Hızı: {download_speed:.2f} Mbps")
upload_label.config(text=f"Yükleme Hızı: {upload_speed:.2f} Mbps")
# Bağlantı durumu güncelle
update_connection_status("Bağlantı Başarılı!")
# Progress bar'ı durdur
progress_bar.stop()
# Grafik verilerini hazırlıyoruz
data = [ping, download_speed, upload_speed]
labels = ['Ping (ms)', 'İndirme (Mbps)', 'Yükleme (Mbps)']
# Grafik çizimi
ax.clear()
ax.bar(labels, data, color=['red', 'blue', 'green'])
ax.set_ylabel('Hız / Ping')
ax.set_title('Hız Testi Sonuçları')
# Grafik gösterimi
canvas.draw()
# Grafik widget'ını görünür yapıyoruz
canvas.get_tk_widget().pack(pady=20)
# Form boyutunu grafiğe göre güncelleme
root.geometry("600x650")
except Exception as e:
messagebox.showerror("Hata", f"Bir hata oluştu: {e}")
progress_bar.stop() # Hata durumunda progress bar'ı durdur
# Grafik widget'ını gizli tut
canvas.get_tk_widget().pack_forget()
# ALG Yazılım linkine tıklanması için fonksiyon
def open_website(event=None):
webbrowser.open("https://algyazilim.com")
# Hakkında formunu oluştur
def open_about():
about_window = tk.Toplevel(root)
about_window.title("Hakkında")
about_window.geometry("600x350")
about_window.config(bg="#f0f0f0")
about_window.resizable(False, False)
# Hakkında formunu merkeze yerleştir
about_window.geometry("+{}+{}".format(int(root.winfo_width()/2 - 300), int(root.winfo_height()/2 - 175)))
# Canvas ekle
canvas = tk.Canvas(about_window, bg="#f0f0f0", width=380, height=220)
canvas.pack(pady=20)
# Hakkında metni için bir Label oluştur
about_text = "ALG Yazılım, yazılım geliştirme alanında uzmanlaşmış bir teknoloji şirketidir. \n" \
"Müşterilerine yenilikçi çözümler sunmayı hedefler. \n\n" \
"İnternet hız testi, yazılım geliştirme ve çeşitli dijital hizmetler sunar."
about_label = tk.Label(canvas, text=about_text, font=("Helvetica", 12), bg="#f0f0f0", fg="#2c3e50", justify="left")
about_label.pack(padx=10, pady=10)
# Logo Resmi
logo_url = "https://yazilim.algyazilim.com/wp-content/uploads/2023/09/ALG-Yazilim-.png"
response = requests.get(logo_url)
img_data = response.content
img = Image.open(BytesIO(img_data))
img = img.resize((150, 150), Image.Resampling.LANCZOS) # Logoyu uygun boyutlandır
logo = ImageTk.PhotoImage(img)
# Logo'yu formda yerleştirme
logo_label = tk.Label(about_window, image=logo, bg="#f0f0f0")
logo_label.image = logo # Referans tutmak için ekleme
logo_label.pack(pady=10)
# ALG Yazılım Inc.© - 2024 yazısı ekleniyor
footer_label = tk.Label(about_window, text="ALG Yazılım Inc.© - 2024", font=("Helvetica", 10), fg="#2980b9", bg="#f0f0f0")
footer_label.pack(pady=5)
# Logo ve yazıya tıklanabilirlik ekliyoruz
logo_label.bind("<Button-1>", open_website)
footer_label.bind("<Button-1>", open_website)
# Ana pencereyi oluştur
root = tk.Tk()
root.title("INT TestSpeed App | ALG Yazılım Inc.© 2024")
root.geometry("600x600")
root.config(bg="#2c3e50") # Arka plan rengini koyu yapıyoruz
root.resizable(False, False) # Formu sabitle
# Ana formu merkeze yerleştir
root.geometry("+{}+{}".format(int(root.winfo_screenwidth()/2 - 300), int(root.winfo_screenheight()/2 - 300)))
# Menü barı oluştur
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)
# Bağlantı durumu etiketi
connection_status_label = tk.Label(root, text="Bağlantı Durumu: Bağlantı Bekleniyor...", font=("Helvetica", 12), fg="white", bg="#2c3e50")
connection_status_label.pack()
# Ping, download ve upload etiketlerini oluştur
ping_label = tk.Label(root, text="Ping: 0 ms", font=("Helvetica", 14), fg="white", bg="#2c3e50")
ping_label.pack(pady=5)
download_label = tk.Label(root, text="İndirme Hızı: 0 Mbps", font=("Helvetica", 14), fg="white", bg="#2c3e50")
download_label.pack(pady=5)
upload_label = tk.Label(root, text="Yükleme Hızı: 0 Mbps", font=("Helvetica", 14), fg="white", bg="#2c3e50")
upload_label.pack(pady=5)
# Test başlatma butonu
start_button = tk.Button(root, text="Test Başlat", font=("Helvetica", 12), bg="#8eba00", fg="white", command=lambda: threading.Thread(target=run_speed_test).start())
start_button.pack(pady=20)
# Progress bar'ı ekle
progress_bar = ttk.Progressbar(root, length=200, mode="indeterminate")
progress_bar.pack(pady=20)
# Grafik alanını oluştur
fig, ax = plt.subplots(figsize=(6, 3))
canvas = FigureCanvasTkAgg(fig, master=root)
# Hakkında butonunu ekle
about_button = tk.Button(root, text="Hakkında", font=("Helvetica", 12), bg="#8eba00", fg="white", command=open_about)
about_button.pack(pady=10)
# Uygulamayı başlat
root.mainloop()