Dalam Tkinter, pustaka GUI yang popular untuk Python, selalunya imej gagal dipaparkan apabila dicipta dalam fungsi atau kaedah kelas. Mari kita selidiki sebab di sebalik tingkah laku pelik ini.
Apabila menggunakan Tkinter di luar kelas, adalah mudah untuk mencipta dan memaparkan imej. Seperti yang ditunjukkan dalam coretan kod pertama, hanya isytiharkan imej menggunakan tkinter.PhotoImage dan tetapkan ia pada kanvas. Walau bagaimanapun, apabila kod itu dibalut dalam kelas (seperti yang ditunjukkan dalam coretan kedua), imej berhenti dipapar.
Kunci kepada masalah terletak pada memahami hayat pembolehubah Python. Pembolehubah setempat, seperti pembolehubah foto dalam contoh yang disediakan, hanya wujud dalam skop fungsi atau kaedah yang ditakrifkan. Dalam kes kelas, pembolehubah foto dimusnahkan selepas contoh kelas dibuat, menjadikan Tkinter tidak dapat untuk mengaksesnya lagi.
Untuk membetulkan keadaan ini, adalah perlu untuk menyimpan rujukan kepada imej di luar skop fungsi atau kaedah. Ini boleh dicapai dengan memberikan pembolehubah foto kepada contoh kelas itu sendiri. Seperti yang ditunjukkan dalam penyelesaian yang disediakan:
self.photo = tkinter.PhotoImage(...)
Dengan berbuat demikian, foto menjadi pembolehubah tika dan hayatnya dilanjutkan untuk tempoh kewujudan tika kelas. Ini membolehkan Tkinter mengakses imej dan memaparkannya seperti yang dijangkakan.
Jika menghadapi isu serupa dengan imej yang gagal dipaparkan dalam Tkinter, ingat untuk menyemak skop pembolehubah imej anda dan pastikan ia berterusan di luar fungsi atau kaedah dalam yang mereka diciptakan.
Atas ialah kandungan terperinci Mengapa Imej Tkinter Saya Tidak Dipaparkan Di Dalam Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!