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

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

Post by Anonymous »

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()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post