Merhabalar. Aşağıdaki kodda ne gibi bir sorun var acaba?

#Arayüz python dosyam

from tkinter import *
from PIL import ImageTk, Image

def ekran():
    root = Tk()
    root.geometry("1500x650")
    temp = ImageTk.PhotoImage(file="C:/Users/Tugrul/Desktop/adem.jpg")
    label_foto = Label(root, bg = "black", image=temp).place(x=10, y=10)

    root.mainloop()

#main dosyam

from Sınıflar import *
from Arayüz import *
from tkinter import *
from PIL import ImageTk, Image



ekran()

"""sinif_A = Sınıflar("6A")
sinif_B = Sınıflar("6B")
sinif_C = Sınıflar("6C")
sinif_D = Sınıflar("6D")
sinif_E = Sınıflar("6E")
sinif_F = Sınıflar("6F")
sinif_G = Sınıflar("6G")
sinif_H = Sınıflar("6H")""" 

Aldığım hata:C:/Program Files/Python38-32/python.exe" “c:/Users/Tugrul/Desktop/Class ile Kura/Main.py”
Traceback (most recent call last):
File “c:/Users/Tugrul/Desktop/Class ile Kura/Main.py”, line 10, in
ekran()
File “c:\Users\Tugrul\Desktop\Class ile Kura\Arayüz.py”, line 11, in ekran
label_foto = Label(root, bg = “black”, image=temp).place(x=10, y=10)
File “C:\Program Files\Python38-32\lib\tkinter_init_.py”, line 3143, in init
Widget.init(self, master, ‘label’, cnf, kw)
File “C:\Program Files\Python38-32\lib\tkinter_init_.py”, line 2567, in init
self.tk.call(
_tkinter.TclError: image “pyimage1” doesn’t exist

Merhaba,

  1. Dosya adında kaçış dizisi bulunuyor. Bu yüzden file argümanının değerini şöyle düzeltin:
    temp = ImageTk.PhotoImage(file=r"C:/Users/Tugrul/Desktop/adem.jpg")
  1. ImageTk.PhotoImage sınıfından örneği fonksiyon dışında tanımlayın.

Desteğiniz için tşkler fakat dediklerinizi yaptıktan sonra da aynı hatayı aldım.

from tkinter import *
from PIL import ImageTk, Image

root = Tk()
root.geometry("1500x650")

def ekran():
    temp = ImageTk.PhotoImage(file=r"C:/Users/Tugrul/Desktop/adem.jpg")
    label_foto = Label(root, bg = "black", image=temp).place(x=10, y=10)

    root.mainloop()

#main dosyam
from Sınıflar import *
from Arayüz import *

ekran()

sinif_A = Sınıflar("6A")
sinif_B = Sınıflar("6B")
sinif_C = Sınıflar("6C")
sinif_D = Sınıflar("6D")
sinif_E = Sınıflar("6E")
sinif_F = Sınıflar("6F")
sinif_G = Sınıflar("6G")
sinif_H = Sınıflar("6H")


hata:Traceback (most recent call last):
File “c:/Users/Tugrul/Desktop/Class ile Kura/Main.py”, line 5, in
ekran()
File “c:\Users\Tugrul\Desktop\Class ile Kura\Arayüz.py”, line 11, in ekran
label_foto = Label(root, bg = “black”, image=temp).place(x=10, y=10)
File “C:\Program Files\Python38-32\lib\tkinter_init_.py”, line 3143, in init
Widget.init(self, master, ‘label’, cnf, kw)
File “C:\Program Files\Python38-32\lib\tkinter_init_.py”, line 2567, in init
self.tk.call(
_tkinter.TclError: image “pyimage1” doesn’t exist

PhotoIımage örneği hala fonksiyonun içinde tanımlı ama. Onu fonksiyon dışına almanızı da söylemiştim.

Onu da denemiştim ama ekrana atarken eski haline getirip atmışım. Emin olmak için demin yine denedim, aynı hatayı aldım. Biraz daha araştırma yaptığımda Tk() yerine Toplevel() gibi bir kullanımla problem çözülüyor fakat onda da 2 tane pencere açılıyor birinde yaptıklarım diğeri ise boş. Birini kapatınca diğeri de kapanıyor.

Son bir şey daha var;
Aşağıdaki ifadeyi:

    label_foto = Label(root, bg = "black", image=temp).place(x=10, y=10)

Size zahmet şu şekilde değiştirin:

    label_foto = tk.Label(root, bg = "black", image=temp)
    label_foto.place(x=10, y=10)

Örnek:

from tkinter import *
from PIL import ImageTk

root = Tk()
root.geometry("1500x650")

temp = ImageTk.PhotoImage(file=r"C:/Users/Tugrul/Desktop/adem.jpg")
label_foto = Label(root, bg = "black", image=temp)
label_foto.place(x=10, y=10)

root.mainloop()
1 Beğeni

Aşağıdaki ifade None değerini döndürüyor:

print(Label(parent, bg = "black", image=temp).place(x=10, y=10))

Eğer Label'ı bir değişkene kaydetmek istiyorsanız, örneği oluşturmadan önce örnek metotlarını çağırmayın.

label = Label(parent)
label.pack() # grid(), pack() <- örneğe ait metotlar.
1 Beğeni

Hata mesajlarınızı da kod şeklinde atarsanız okumak daha kolay olur.


Bunun etkisi ne olacak anlamadım.


Şöyle bir kod bende hatasız çalışıyor:

from tkinter import *
from PIL import ImageTk, Image

root = Tk()
root.geometry("1500x650")

def ekran():
    temp = ImageTk.PhotoImage(file="C:/Users/Dinçel/Desktop/english-keyboard.jpg")
    label_foto = Label(root, bg = "black", image=temp).place(x=10, y=10)

    root.mainloop()


ekran()

Eğer siz de kendi modüllerinizi import etmeden bu şekilde denediğinizde hata almıyorsanız import ettiğiniz kodları incelememiz lazım.

Aklıma bununla alakalı daha önce yaşadığım bir problem geldi de. Sanırım o durum biraz farklıydı. Bu örnekte bir etkisi yok evet.

Merhaba. Maalesef yine çalıştıramadım. Fonksiyonu kendi yazdığım sayfada çalıştırınca hata almıyorum. Diğer sayfadan çağırınca hata alıyorum. Diğer sayfada hata aramak daha mantıklı gibi ama sadece import edip fonksiyonu çağırıyorum aynı hata devam ediyor. Çıkamadım işin içinden tşkler yardımlarınız için.

Merhaba. Ben de bu şekilde düşünüp import ettiğim sayfada sadece fonksiyonu çağırdım aynı hatayı aldım. Aklınıza gelen başka bir çözüm yolu var mı acaba?

Tam anlayamadım, ekran fonksiyonunu başka bir programdan mı çağırdınız yoksa bu kodu mu çalıştırdınız:

Benim 2 tane python dosyam var. Bunlardan bir tanesinin ismi Arayüz ve ekran() isimli fonksiyon içeriyor. Diğer dosyam ise main. Ben Arayüz isimli dosyamı from Arayüz import * diyerek main dosyama çekiyorum. daha sonra da ekran() diyerek fonksiyonumu çalıştırmak istiyorum.

O zaman main.py’yi de incelememiz lazım.

from Sınıflar import *
from Arayüz import *

#arayüz dosyasından fonksiyon çağırılıyor
ekran()

sadece fonksiyonu çağırıyorum ve hata alıyorum

O zaman kodunuzun tamamını atın. Ben yolladığınız koda bakarak hatanın sebebini nasıl anlayayım ki? Sınıflar dosyasında ne yapılıyor?

def ekran():
    #fotoların döneceği label oluşturuluyor
    temp = ImageTk.PhotoImage(file=r"C:/Users/Tugrul/Desktop/adem.jpg")
    Label(root, bg = "black", image=temp).place(x=10, y=10)
    
    #sınıf seçimi için radyo butonları oluşturuluyor
    secim = IntVar(root)

    sınıflar = [
        ("6A", 1),
        ("6B", 2),
        ("6C", 3),
        ("6D", 4),
        ("6E", 5),
        ("6F", 6),
        ("6G", 7),
        ("6H", 8)
    ]

    i = 0
    for txt, val in sınıflar:
        Radiobutton(root, text=txt, padx=20, variable=secim, value=val, font = ('Arial' , 35)).place(x=550, y=10+i*80)
        i += 1

    #sınıfı seçmek için buton ekleniyor
    x = lambda : print("" + str(secim.get()))
    Button(root, text="SINIFINI SEÇ", command=x, font = ('Arial' , 30)).place(x=700, y=10)
    
    #kurayı çekecek olan buton ekleniyor
    Button(root, text="KURAYI ÇEK", font = ('Arial' , 30)).place(x=700, y=100)

    #ilk 3'e girenlerin ismi için etiket oluşturuluyor
    Label(root, text="En çok çıkanlar", font = ('Arial' , 30)).place(x=700, y=190)

    root.mainloop()

ve ``` #main dosyam
from Sınıflar import *
from Arayüz import *

#arayüz dosyasından fonksiyon çağırılıyor
ekran()

bazı eklemeler yaptım ama onlar sorun çıkarmıyor test ettim

Attığınız kodlar bende hata vermiyor. Bütün kodları eksiksiz atın istiyorsanız.

Bütün kodları attım zaten bir de ekran görüntüsü alıp atayım 1s