Изображение "pyimage5" не существует Ошибка после добавления 5 строк кода - PullRequest
1 голос
/ 25 июня 2019

Я пытаюсь вызвать строку из поля ввода в другом классе общедоступной переменной Var.Код для вызова швов Var, чтобы он работал нормально, но получил ошибку '' 'image "pyimage5" не существует "на моих грехах второго класса, я добавил новые строки кода.Раньше все работало весело.

Строки кода, которые я добавил:

class StartPage(tk.Frame):

     def __init__(self, parent, controller):
         tk.Frame.__init__(self,parent)

class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent,bg=Gray_Back_Page_1)

в

class StartPage(tk.Frame):

     def __init__(self, parent, controller):
         super(StartPage,self).__init__()

class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        super(PageOne,self).__init__(parent,bg=Gray_Back_Page_1)

и добавили следующий код вне класса

StartPage_object = StartPage(tk.Frame, SeaofBTCapp) 
USER = StartPage_object.Username_Text.get() 
PASSWORD = StartPage_object.Password_Text.get()

Код изображения Var = Image.open(Image_File +"\File_Name.png") работает на моей стартовой странице, но выдает ошибку на первой странице

Пожалуйста, см. Полный код ниже:

desktop = os.path.expanduser("~\Desktop")
Image_File = os.path.expanduser("~\Desktop\file")

#===============Frame==========================Container====================>
class SeaofBTCapp(tk.Tk,object):

    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)
        tk.Tk.wm_title(self, "Name")
        tk.Tk.geometry(self,"1360x728")
        tk.Tk.iconbitmap(self, default= desktop + "\icon.ico")
        self.resizable(False, False)
        #tk.Tk.overrideredirect(False)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand = True)
        container.grid_rowconfigure(0, weight=10)
        container.grid_columnconfigure(0, weight=10)

        self.frames = {}

        for F in (StartPage, PageOne):

            frame = F(container, self)

            self.frames[F] = frame

            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(StartPage)

    def show_frame(self, cont):

        frame = self.frames[cont]
        frame.tkraise()

#===============Start=========================Page====================>
class StartPage(tk.Frame):

     def __init__(self, parent, controller):
         super(StartPage,self).__init__()

     #=============Set_Background==================>
     load1 = Image.open(Image_File +"\Login_Bcakground.png")
     render1 =ImageTk.PhotoImage(load1)

     #========= Reset_username & Password ===========>
     self.Username_Text= tk.StringVar()
     self.Password_Text= tk.StringVar()

     #==== Creating Buttons, Entry Box and Labels with there commands =====>
     User_Name_Entry = tk.Entry(self,textvariable = self.Username_Text, fg = 
                        Entry_Box_Text_Colour,bg = 
                        Entry_Box_Back_White,borderwidth = 0, 
                        font=Normal_Text,width = 30)
     User_Name_Entry.place(x=795,y=282)

     User_Pass_Entry = tk.Entry(self,textvariable = selfPassword_Text, fg = 
                       Entry_Box_Text_Colour,bg = 
                       Entry_Box_Back_White,borderwidth = 0, 
                       font=Normal_Text,width = 30)
     User_Pass_Entry.place(x=795,y=329)

#===============Login==========================Var====================>

StartPage_object = StartPage(tk.Frame, SeaofBTCapp) 
USER = StartPage_object.Username_Text.get() 
PASSWORD = StartPage_object.Password_Text.get()

#===============Page==========================One====================>
class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        super(PageOne,self).__init__(parent,bg=Gray_Back_Page_1)

        photo = ImageTk.PhotoImage(Image.open(Image_File +"\Splach_Page.png"))      
        vlabel=tk.Label(self,text = "",image=photo)
        vlabel.image = photo
        vlabel.place (x=-1,y=-5,relwidth=1, relheight=1)

Строки ошибок:

image "pyimage5" doesn't exist
Stack trace:
 >  File "C:\Users\MainUser\source\v_1_1.py", line 251, in __init__
 >    vlabel=tk.Label(self,text = "",image=photo)
 >  File "C:\Users\MainUser\source\v_1_1.py", line 93, in __init__
 >    frame = F(container, self)
 >  File "C:\Users\MainUser\source\v_1_1.py", line 2736, in <module>
 >    app = SeaofBTCapp()
Loaded '__main__'

1 Ответ

0 голосов
/ 27 июня 2019

Это похоже на известную ошибку в tkinter, когда сборщик мусора python удаляет фотографию. Чтобы предотвратить это, вам нужно создать глобальную ссылку на изображение. Примерно так должно работать:

class PageOne(tk.Frame):
    images = []

    def __init__(self, parent, controller):
        super(PageOne,self).__init__(parent,bg=Gray_Back_Page_1)

        photo = ImageTk.PhotoImage(Image.open(Image_File +"\Splach_Page.png"))
        PageOne.images.append(photo)     
        vlabel=tk.Label(self,text = "",image=photo)
        vlabel.image = photo
        vlabel.place (x=-1,y=-5,relwidth=1, relheight=1)

Надеюсь, что это работает для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...