import os
from PIL import ImageTk, Image
import tkinter
root = tkinter.Tk()
class Sınıflar:
ogrenci_adlari = []
ogrenci_foto_adresleri = []
sinif_listesi = []
def __init__(self, sinifadi = "Sınıf adı yok!"): # başlangıç değerleri alınıyor
self.sinifadi = sinifadi
self.sinif_listesi.append(sinifadi)
self.ogrenciler()
self.ogrenci_fotoadres()
def ogrenciler(self): # öğrenci isimleri listeye alınıyor
urladres = "C:/Users/Tugrul/Desktop/SMO Kura Programı/Fotolar/" + self.sinifadi
for ogrenci in os.listdir(urladres):
self.ogrenci_adlari.append(ogrenci[0:-4])
def ogrenci_fotoadres(self): # foto işlemi için liste oluşturuluyor
for ad in self.ogrenci_adlari:
x = "C:/Users/Tugrul/Desktop/SMO Kura Programı/Fotolar/" + self.sinifadi + "/" + ad + ".jpg"
self.ogrenci_foto_adresleri.append(ImageTk.PhotoImage(file = x))
def bilgiYaz(self): # sınıf bilgileri için fonksiyon yazılıyor
print("Sınıf adı:" + self.sinifadi + " Mevcut:" + str(len(self.ogrenci_adlari)))```
nesne oluşturmak istediğim yer
```from Sınıflar import *
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")
sinif_B.bilgiYaz()```
aldığım hata :
Traceback (most recent call last):
File "C:\Program Files\Python38-32\lib\site-packages\PIL\ImageTk.py", line 124, in __del__
name = self.__photo.name
AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'
Bunun birden fazla nesne üretmekle alakası yok. Aşağıdaki sayfada yer aldığı şekilde yaparsanız sanırım sorun çözülür. Yani
photo = ImageTk.PhotoImage(Image.open(imgpath))
Merhabalar. Öneriniz için tşkler. Şöyle ki; kod üzerinde deneme yanılmayla oynamalar yaptım, şu an kodu eski haline getirdim ve hata almadım. Gözümden kaçan başka bir yer oldu sanırım.
1 Beğeni