Merhaba iyi geceler, aşağıdaki kodda göreceğiniz üzere nesne tabanlı bir çalışma yapıyorum fakat bir problem ile karşılaştım eklediğim canvas resimlerin sadece sonuncusu gözüküyor problemin çözümünü biliyorsanız yardımcı olursanız sevinirim.
Bunun sebebi, canvas.images'in sürekli yeni bir değer alması. canvas.images'i bir list haline getirin, oluşturulacak resimler de bu listeye eklensinler.
Var, evet. ImageTk.PhotoImage nesnelerini global alanda tanımlayabilirsiniz. Veya bir önceki mesajımda önerdiğim yaklaşımı da izleyebilirsiniz. İlla canvas.images gibi aslında canvas'a ait olmayan bir attribute oluşturmak zorunda değilsiniz. Herhangi bir boş liste kullansanız da olur. Veya tk.Canvas nesnesini özelleştirip, bu özelleştirilmiş nesnenin, ImageTk.PhotoImage nesnelerini içermesi için kullanılacak bir attribute da tanımlayabilirsiniz. Size kalmış. Amaç, ImageTk.PhotoImage nesnesi bir fonksiyon veya bir sınıf içinde yer alan local bir değişkenin değeri olduğunda, global alanda yer alan bir başka değişkenin değerinin, bu local değişkenin değerini içermesini, ona değinmesini sağlamak ve böylece nesnenin garbage collector'a gitmesini önlemek.
canvas.image = attribute dedikten sonra istediğiniz kadar farklı isimlerde değişkenler oluşturun, bir önceki images değişkeninin tuttuğu değer değişecek.
İlla farklı değişken isimleri kullanmak istiyorsanız, canvas.image'i silersiniz ve her bir resim için random isimleri şu şekilde oluşturabilirsiniz.
Oluşturulan resimlerin bir listede toplanması yeterince kolay değil mi?
@dildeolupbiten global isim alanını rastgele değişkenler ile kirletmeyi bir çözüm olarak sunmanızı doğru bulmuyorum. Böyle bir kodu birisinin projesinde kullanmasını ister miydiniz?
Ben arkadaşa izleyebileceği yöntemler konusunda bir çeşitlilik sundum. global alanda rastgele değişkenler oluşturmasını özellikle tavsiye etmedim.
şeklinde bir cevap geldikten sonra.
Yukarıdaki gibi bir yazı yazdım.
Konuyla alakalı görüşümü de şu şekilde ifade ettim.
Yani hangi yaklaşımın daha doğru olacağı konusunda herhangi bir görüş beyan etmek istemedim. Sadece yolları gösterdim, arkadaş hangi yolu tercih etmek istiyorsa onu kullansın dedim.