BS4 ile proxyleri çekmek nasıl yapabilirim yardımcı olurmusunuz?

burada kodum mevcut benim yapmak istediğimi size izah etmeye çalışacağım şimdi ben bu iki penceredeki işaretlediğim yeri ana pencere sonuc bölümünde toplayıp göstermek istiyorum yani basitçe toplam başarılı ve başarısız proxyleri göstermek istiyorum

DeepinEkranGörüntüsü_alan-seç_20201216013929

DeepinEkranGörüntüsü_alan-seç_20201216014305

pastebin şifresi 123456

Yapmaya çalıştığınız işlemi paylaştığınız kod üzerinden göstermek zaman alıcı bir iş. Ama ne yapmak istediğinizi anladığımı düşünüyorum. Ve size fikir vermesi açısından, aşağıdaki kodu sizinle paylaşıyorum.

Aşağıdaki kodu çalıştırdığınızda, karşınıza bir adet tk.Entry ve bir adet tk.Button nesnesi gelir. tk.Button nesnesinin text parametresinin değeri Toplevel Aç. Bu düğmeye her tıkladığınızda yeni bir tk.Toplevel nesnesi oluşturulur. Her bir tk.Toplevel nesnesinde bir adet tk.Label widgeti yer alır. tk.Toplevel nesnesi oluştuktan 1 saniye sonra tk.Label'in değeri değiştirilir (99 saniye boyunca, her saniyede bir, bu widgetin değeri sürekli değiştirilir). Ve ana pencerede yer alan tk.Entry widgetine değişen bu değerler yazdırılır. Birden çok tk.Toplevel widgeti açarsanız, tk.Entry widgetine, bütün tk.Label widgetlerindeki değerlerin toplamı yazılır.

Bu örnekte dikkatinizi çekmek istediğim şey şu; tanımladığımız widgetleri, fonksiyonların parametrelerinin değeri olarak atadığımızda, iki ayrı pencere arasında veri transferi yapabiliriz.

Siz de benzer şekilde ana pencerenizde yer alan bir widgeti, toplevel'i açan fonksiyona parametre olarak atayıp, toplevel'de gerçekleşen bir işlem ile widgetin değerini değiştirebilirsiniz.

Kod:

import tkinter as tk


def deger_degistir(entry, root, label, deger):
    try:
        label["text"] = deger
        entry.delete("0", "end")
        entry.insert(
            "insert", 
            sum(int(i["text"]) for i in root.labels if i["text"])
        )
    except tk.TclError:
        pass


def on_delete_window(root, toplevel, label):
    root.labels.remove(label)
    toplevel.destroy()


def toplevel_ac(root, entry):
    toplevel = tk.Toplevel()
    toplevel.geometry("100x100")
    label = tk.Label(master=toplevel)
    label.pack()
    # label widgetini root.labels listesine ekliyoruz.
    root.labels += [label]
    toplevel.wm_protocol(
        "WM_DELETE_WINDOW", 
        lambda: on_delete_window(root, toplevel, label)
    )
    for i in range(1, 100):
        # toplevel açıldığında 99 saniye boyunca deger_degistir
        # isimli fonksiyon değeri değişen 'deger' parametresi ile
        # çağrılacak.
        root.after(
            i * 1000, 
            lambda deger=i: deger_degistir(entry, root, label, deger)
        )


def main():
    root = tk.Tk()
    # button isimli düğmeye her basıldığında label widgeti oluşacak.
    # ve her bir label widgeti root.labels listesine dahil edilecek.
    # böylece her bir label widgetindeki değişen değerler
    # toplanıp entry widgetine yazdırılacak
    root.labels = []
    entry = tk.Entry(master=root)
    entry.pack()
    button = tk.Button(
        master=root, 
        text="Toplevel Aç", 
        command=lambda: toplevel_ac(root, entry)
    )
    button.pack()
    root.mainloop()


if __name__ == "__main__":
    main()

ben sizin dediğiniz gibi yolda gidersem diyelim ki 4 adet TopLevel penceresi var ve bunun içerisindeki değerleri almak ve 4 ünü toplayım ana pencereye yazdırtmak işlemini nasıl yapabilirim?

Yukarıdaki örnek tam olarak bunu yapıyor işte. İsterseniz 10 tane tk.Toplevel widgeti oluşturun, ana penceredeki tk.Entry widgetinin değeri, farklı tk.Toplevel widgetlerinde yer alan tk.Label widgetlerinin an içerisinde aldığı değerlerin toplamı olacaktır. İsterseniz kodu çalıştırın, kendi gözlerinizle görün.

Edit: Tavsiyem, kodun özellikle tkinter ile ilgili olan kısmını, daha okunaklı ve fonksiyonlar arasında parametre alışverişine izin verecek şekilde yeniden yazmanız yönünde.