cari
Rumahpembangunan bahagian belakangTutorial PythonMengapa Imej Tkinter Hilang Apabila Dicipta Dalam Kaedah Kelas?

Why Do Tkinter Images Disappear When Created Within Class Methods?

Memahami Isu Keterlihatan Imej Tkinter

Tkinter, perpustakaan GUI yang popular untuk Python, kadangkala menghadapi masalah dengan memaparkan imej apabila dibuat dalam fungsi. Tingkah laku ini berpunca daripada cara Tkinter mengendalikan pembolehubah setempat seperti rujukan imej.

Cabaran

Pertimbangkan kod berikut yang berjaya memaparkan imej:

import tkinter

root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root.mainloop()

Walau bagaimanapun, apabila mencipta imej dalam kaedah kelas, imej itu hilang.

import tkinter

class Test:
    def __init__(self, master):
        canvas = tkinter.Canvas(master)
        canvas.grid(row = 0, column = 0)
        photo = tkinter.PhotoImage(file = './test.gif')
        canvas.create_image(0, 0, image=photo)

root = tkinter.Tk()
test = Test(root)
root.mainloop()

The Penyelesaian

Isu timbul kerana foto pembolehubah setempat mewakili rujukan kepada imej. Dalam kaedah kelas, rujukan ini hilang kerana foto di luar skop selepas kaedah dilaksanakan.

Untuk menyelesaikan masalah ini, simpan rujukan berterusan kepada foto dalam contoh kelas:

import tkinter

class Test:
    def __init__(self, master):
        canvas = tkinter.Canvas(master)
        canvas.grid(row = 0, column = 0)
        self.photo = tkinter.PhotoImage(file = './test.gif')
        canvas.create_image(0, 0, image=self.photo)

root = tkinter.Tk()
test = Test(root)
root.mainloop()

Dengan menyimpan rujukan dalam self.photo, ia berterusan sepanjang hayat contoh kelas, memastikan imej kekal kelihatan.

Atas ialah kandungan terperinci Mengapa Imej Tkinter Hilang Apabila Dicipta Dalam Kaedah Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Adakah pemahaman tuple mungkin di Python? Jika ya, bagaimana dan jika tidak mengapa?Adakah pemahaman tuple mungkin di Python? Jika ya, bagaimana dan jika tidak mengapa?Apr 28, 2025 pm 04:34 PM

Artikel membincangkan kemustahilan pemahaman tuple di Python kerana kekaburan sintaks. Alternatif seperti menggunakan tuple () dengan ekspresi penjana dicadangkan untuk mencipta tupel dengan cekap. (159 aksara)

Apakah modul dan pakej dalam Python?Apakah modul dan pakej dalam Python?Apr 28, 2025 pm 04:33 PM

Artikel ini menerangkan modul dan pakej dalam Python, perbezaan, dan penggunaannya. Modul adalah fail tunggal, manakala pakej adalah direktori dengan fail __init__.py, menganjurkan modul yang berkaitan secara hierarki.

Apa itu Docstring dalam Python?Apa itu Docstring dalam Python?Apr 28, 2025 pm 04:30 PM

Artikel membincangkan docstrings dalam python, penggunaan, dan faedah mereka. Isu Utama: Kepentingan Docstrings untuk Dokumentasi Kod dan Kebolehcapaian.

Apakah fungsi lambda?Apakah fungsi lambda?Apr 28, 2025 pm 04:28 PM

Artikel membincangkan fungsi Lambda, perbezaan mereka dari fungsi tetap, dan utiliti mereka dalam senario pengaturcaraan. Tidak semua bahasa menyokong mereka.

Apakah rehat, teruskan dan lulus dalam Python?Apakah rehat, teruskan dan lulus dalam Python?Apr 28, 2025 pm 04:26 PM

Artikel membincangkan Break, Continue, dan Lulus di Python, menerangkan peranan mereka dalam mengawal pelaksanaan gelung dan aliran program.

Apakah pas di Python?Apakah pas di Python?Apr 28, 2025 pm 04:25 PM

Artikel ini membincangkan pernyataan 'lulus' di Python, operasi null yang digunakan sebagai pemegang tempat dalam struktur kod seperti fungsi dan kelas, yang membolehkan pelaksanaan masa depan tanpa kesilapan sintaks.

Bolehkah kita lulus fungsi sebagai hujah di Python?Bolehkah kita lulus fungsi sebagai hujah di Python?Apr 28, 2025 pm 04:23 PM

Artikel membincangkan fungsi lulus sebagai argumen dalam python, menonjolkan manfaat seperti modularity dan penggunaan kes seperti penyortiran dan penghias.

Apakah perbezaan antara / dan // dalam Python?Apakah perbezaan antara / dan // dalam Python?Apr 28, 2025 pm 04:21 PM

Artikel membincangkan / dan // pengendali dalam python: / untuk bahagian yang benar, // untuk bahagian lantai. Isu utama adalah memahami perbezaan dan kes penggunaannya. Kira -kira: 158

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)