Python Customtkinter Fotoğraf Ekleme

süper şekilde ilerliyorum arayüz geliştirmede lakin şöyle bir hata var bir fonksiyon var ağ kontrolü yapan 6 saniyede bir kontrol yapıcak ağ olmadığında hata ekranı çıkıcak ama bu hata ekranı çıkmıyor hata veriyor fotoğraf eklemeyi kaldırdım her şey düzgün çalışıyor fotoğraf eklemede problemim var

def ag_Kontrol2():
    def check_internet_connection():
        try:
            socket.create_connection(("www.google.com", 80))
            uye_Ekrani.deiconify()
            return True
        except OSError:
            return False

    if not check_internet_connection():           
        # FARE İLE SÜRÜKLEME OLAYI
        def start_drag(event):
            global last_x, last_y
            last_x = event.x
            last_y = event.y

        last_x = 0  # last_x değişkenini tanımlayın ve başlangıç değerini atayın

        def drag(event):
            global last_x
            x, y = event.x - last_x, event.y - last_y
            internethata_Ekrani.geometry(f"+{internethata_Ekrani.winfo_x() + x}+{internethata_Ekrani.winfo_y() + y}")

        uye_Ekrani.withdraw()

        internethata_Ekrani = CTk()
        internethata_Ekrani.title("Bağlantı Yok!")

        internethata_Ekrani.overrideredirect(True)
        internethata_Ekrani.attributes("-topmost", True)
        
        ortala_pencere(internethata_Ekrani, 400, 300)

        showpass2_foto_tanim = CTkImage(Image.open(imagekonumu), size=(70,70))

        resimekle = CTkLabel(internethata_Ekrani, text=None, image=showpass2_foto_tanim)
        resimekle.pack(pady=20)

        


        kontrol1label = CTkLabel(internethata_Ekrani, text="İnternet bağlantınızı kontrol ediniz!", font=("Arial", 16, "bold"), text_color="#F0F0F0")
        kontrol1label.place(x=70, y=110)

        kontrol2label = CTkLabel(internethata_Ekrani, text="Hata sizden kaynaklı değil ise\nlütfen bir süre sonra tekrar deneyiniz.", font=("Arial", 16, "bold"), text_color="#F0F0F0")
        kontrol2label.place(x=63 ,y=134)


        #kod_Rastgele = random.randint(100000, 999999)

        baglanti_Hata_Kodu = "444 - 444"

        hata_Kodu = CTkLabel(internethata_Ekrani, text=f"Hata kodu {baglanti_Hata_Kodu}", font=("Arial", 14, "italic"), text_color="#3C486B")
        hata_Kodu.place(x=5 ,y=5)

        def net_kapat():
            internethata_Ekrani.destroy()
            sys.exit()
            
        def on_closing():
            sys.exit()

        def tekrar_Dene():
            #pid = os.getpid()
            #subprocess.Popen(["python", "dosya_adiniz.py"])
            internethata_Ekrani.destroy()
            #subprocess.Popen(["wallet.exe"], creationflags=subprocess.CREATE_NO_WINDOW)
            ag_Kontrol2()

        internethata_Ekrani.protocol("WM_DELETE_WINDOW", on_closing)


        tamambuton = CTkButton(internethata_Ekrani, text="TAMAM", font=("Arial", 13, "bold"), text_color="#3C486B",fg_color="#F0F0F0",hover_color="#F45050", width=50, height=10, command=net_kapat)
        tamambuton.pack(side="bottom", pady=80)

        tekrarbuton = CTkButton(internethata_Ekrani, text="TEKRAR DENE", font=("Arial", 13, "bold"), text_color="#3C486B",fg_color="#F0F0F0",hover_color="yellow", width=50, height=20, command=tekrar_Dene)
        tekrarbuton.place(x=149, y=250)

        internethata_Ekrani.bind("<ButtonPress-1>", start_drag)
        internethata_Ekrani.bind("<B1-Motion>", drag)
        winsound.PlaySound("SystemHand", winsound.SND_ASYNC)
        internethata_Ekrani.mainloop()
    uye_Ekrani.after(6000, ag_Kontrol2)

bu fonksiyonu çağırıyoprum arayüzümde ama aldığım hata

Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\tkinter_init_.py”, line 1948, in call
return self.func(*args)
^^^^^^^^^^^^^^^^
File “C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\tkinter_init_.py”, line 861, in callit
func(*args)
File “c:\Users\leplo\OneDrive\Masaüstü\DonanimWallet\wallet.py”, line 497, in ag_Kontrol2
resimekle = CTkLabel(internethata_Ekrani, text=None, image=showpass2_foto_tanim)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\site-packages\customtkinter\windows\widgets\ctk_label.py”, line 104, in init
self._update_image()
File “C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\site-packages\customtkinter\windows\widgets\ctk_label.py”, line 141, in _update_image
self._label.configure(image=self._image.create_scaled_photo_image(self.get_widget_scaling(),
File "C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\tkinter_init
.py", line 1702, in configure
return self.configure(‘configure’, cnf, kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\leplo\AppData\Local\Programs\Python\Python312\Lib\tkinter_init
.py", line 1692, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: image “pyimage2” doesn’t exist

Umarım çözülür bu sorunum şimdiden teşekkürler.

Merhaba,

Anladığım kadarıyla birden fazla ekranı Tk veya CTk widgetleriyle oluşturduğunuz için resim eklerken hata alıyorsunuz.

Tk veya CTk, ana pencere için kullanılan widgetler. Yan pencereler için tk.Toplevel veya ctk.Toplevel widgetlerini kullanmalısınız.

Bakın mesela aşağıdaki kodlar da aynı hatayı verecektir.

import tkinter as tk
import PIL.Image as Image
import customtkinter as ctk


def create_widget(root):
    root.withdraw()
    path = "test.png"
    sub_root = ctk.CTk()
    sub_root.title("Bağlantı Yok!")
    sub_root.overrideredirect(True)
    sub_root.attributes("-topmost", True)
    img = ctk.CTkImage(Image.open(path), size=(70, 70))
    label = ctk.CTkLabel(sub_root, text="", image=img)
    label.pack()


def main():
    root = tk.Tk()
    create_widget(root)
    root.mainloop()


main()

Yukarıdaki kodları şu şekilde değiştirirsek sorun çözülür.

import tkinter as tk
import PIL.Image as Image
import customtkinter as ctk


def create_widget(root):
    root.withdraw()
    path = "test.png"
    sub_root = ctk.CTkToplevel()
    sub_root.title("Bağlantı Yok!")
    sub_root.overrideredirect(True)
    sub_root.attributes("-topmost", True)
    img = ctk.CTkImage(Image.open(path), size=(70, 70))
    label = ctk.CTkLabel(sub_root, text="", image=img)
    label.pack()


def main():
    root = tk.Tk()
    create_widget(root)
    root.mainloop()


main()