Tkinter Canvas -Bild ist wahrscheinlich ein Müll gesammelt, aber das Erstellen einer anhaltenden Referenz löst das Probl

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Tkinter Canvas -Bild ist wahrscheinlich ein Müll gesammelt, aber das Erstellen einer anhaltenden Referenz löst das Probl

by Anonymous » 25 Aug 2025, 16:26

Ich erstelle mit TKInter ein Kennwortmanagerprogramm in Python. In meinem main.py habe ich den Code für die Schaltflächen, die das Windows hinzufügen/aktualisieren/abrufen. Derzeit werden der Code für diese Funktionen als Funktionen in meinem Haupt -Py selbst definiert. Stack Overflow sagt mir, dass dieses Problem durch Pythons Müllsammlungsmechanismus verursacht wird, aber trotz einer anhaltenden Bezugnahme auf das Bild wird das Bild immer noch nicht angezeigt. Ich kann einfach nicht herausfinden, wo ich einen Fehler mache.

Code: Select all

from tkinter import *
from PIL import ImageTk, Image

class AddPasswordWindow:
def __init__(self, master_window):
self.master_window = master_window
self.add_window = Toplevel(self.master_window)
self.logo = ImageTk.PhotoImage(Image.open("password_img.png"))
self.create_add_window()
self.create_canvas()

def create_add_window(self):
self.add_window.title("Add a password")
self.add_window.config(padx=50, pady=50)

def create_canvas(self):
canvas = Canvas(self.add_window, width=205, height=205)
canvas.create_image(102, 102, image=self.logo)
canvas.grid(column=0, row=0)
< /code>
Dies ist ein Extrakt meiner entsprechenden Main.py:
from tkinter import *
import child_windows

# Launch this function when the Add button is clicked
def launch_add_password_window():
child_windows.AddPasswordWindow(main_window)

# User Interface
# Create root window
main_window = Tk()
main_window.title("Password Manager")
main_window.config(padx=15, pady=15)

# Create Add Button
add_button = Button(main_window, command=launch_add_password_window, text="Add Password")
add_button.grid(column=0, row=0)

main_window.mainloop()

Top