2016-04-08 9 views
0

:Görüntü tek bir düğmeye çalışan ancak bir çerçeve içinde bir düğmenin içinde bir görüntü yürütmek için bu kodu kullandığınızda değil başka gayet güzel çalışıyor

image2= PhotoImage(file="questionmark.gif") 
f3buttonQ=Button(f3,image=image2, command = findcustomer).place(x=425,y=10) 

Ancak, ben sadece root bu kullanmak istediğinizde resim kod ikinci parça ve ikisi arasındaki tek fark yüklemez

image2= PhotoImage(file="questionmark.gif") 
f3buttonQ=Button(root, image=image2,command = findcustomer).place(x=450,y=110) 

birincisinde f3 olacaktır: çerçeve Bu kodu kullanmaktadır. Teşekkürler.

Güncelleme:

Yani bu kullanarak çalışmak için komut başardı:

photo2= tk.PhotoImage(file="questionmark.gif") 
button = Button(image=photo2,command = findcustomer).place(x=450,y=110) 

Bunu yalnız çalıştırdığınızda görüntü düğmesi üzerine sadece mükemmel yüklendi, ancak bu eklediğinizde satırın altında ikisi de yeniden boşalırlar ve görüntü yüklenmez:

f3findProduct=Button(image=photo2, command = findproduct).place(x=110,y=190) 
+2

Görüntülemeniz için ihtiyacınız olan her görüntü için bunu yapmalısınız Tam dolu bir test örneği sunmanızı öneririz –

+0

'de neler olduğunu görebiliyorum. Tahminimce ikinci resimdeki resim2 referansı [resmi yap mümkünse] (https://docs.python.org/2/library/tkinter.html#images): _Görüntü nesnesine yapılan son Python referansı silindiğinde, resim verileri de iyi silinir. –

+0

görüntü yeniden fotoğraf3 gibi yeni bir ad olarak ve sonra ikinci düğme komutunu çalıştırıyor ama aynı zamanda her ikisinin de boş yüklenmesine neden oluyor gibiydi. Resmin kopya kopyasına ihtiyacım var mı, ancak farklı bir adla kaydedip her düğmenin her resmini mi çağırmalıyım? – Coder101

cevap

1

Kısa hikaye, görüntünüzün çöp toplanması ve artık görüntülenmemesidir. Bunun bir referansını tutmalısın. effbot den

: Bir Tkinter widget'ı bir Fotoimaj veya başka Görüntü nesnesi eklediğinizde

, resim nesnesine kendi referansını tutmalısınız. Aksi takdirde, görüntü her zaman gösterilmez.

Sorun, Tkinter/Tk arabiriminin görüntü nesnelerinin düzgün şekilde Resim nesneleriyle işleyememesidir; Tk parçacığı, iç nesnesine bir başvuru tutacaktır, ancak Tkinter bunu yapmaz. Python’un çöp toplayıcı Tkinter nesnesini attığında, Tkinter görüntüyü serbest bırakmak için Tk'ye söyler. Ancak görüntü bir widget tarafından kullanıldığından Tk onu yok etmemektedir. tamamen değil.

photo = PhotoImage(...) 

label = Label(image=photo) 
label.image = photo # keep a reference! 
label.pack() 
: Sadece

çözüm Widget özniteliği takarak örneğin Tkinter nesnesine bir başvuru tutmak için emin olmaktır ... tamamen şeffaf hale görüntüyü boşlukları

+0

Tiner arayüzü, görüntüleri doğru şekilde kullanmakta pitonlar çöp toplama [belgelere] göre (https://docs.python.org/2/library/tkinter.html#images) amaçlanan davranıştır: _With görüntü nesnesine son Python başvuru silinir, görüntü verileri de silinir, _ –

İlgili konular