From b24a5eccc7ae32a162e569bf4a609eb2bc198092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20=C3=96NDER?= <24854312+cektor@users.noreply.github.com> Date: Sat, 16 Nov 2024 04:24:46 +0300 Subject: [PATCH] Add files via upload --- speed-windows.png | Bin 0 -> 44866 bytes speed.py | 163 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 speed-windows.png create mode 100644 speed.py diff --git a/speed-windows.png b/speed-windows.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b2205ea0505b7862bc8d1c3c9096934de27d6b GIT binary patch literal 44866 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 literal 0 HcmV?d00001 diff --git a/speed.py b/speed.py new file mode 100644 index 0000000..2622c62 --- /dev/null +++ b/speed.py @@ -0,0 +1,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("", open_website) + footer_label.bind("", 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()