Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “图像”;pyimage5“;不';添加5行代码后不存在错误_Python_Tkinter_Tk - Fatal编程技术网

Python “图像”;pyimage5“;不';添加5行代码后不存在错误

Python “图像”;pyimage5“;不';添加5行代码后不存在错误,python,tkinter,tk,Python,Tkinter,Tk,我正在尝试将另一个类中的输入框中的字符串调用为公共变量。调用该变量的代码工作正常,但在我的第二个类中不存在错误“”“image”pyimage5“”,因为我添加了新的代码行。以前一切都很有趣 我添加的代码行: class StartPage(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self,parent) class PageOne(tk.Frame): d

我正在尝试将另一个类中的输入框中的字符串调用为公共变量。调用该变量的代码工作正常,但在我的第二个类中不存在错误“”“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)

并在类外部添加了以下代码

StartPage_object = StartPage(tk.Frame, SeaofBTCapp) 
USER = StartPage_object.Username_Text.get() 
PASSWORD = StartPage_object.Password_Text.get()
图像代码
Var=image.open(image\u File+“\File\u Name.png”)
seams无法在我的起始页中工作,但在第一页中给了我一个错误

请参阅下面的完整代码:

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__'

图像“pyimage5”不存在
堆栈跟踪:
>文件“C:\Users\MainUser\source\v_1_1.py”,第251行,在uu init中__
>vlabel=tk.Label(self,text=”“,image=photo)
>文件“C:\Users\MainUser\source\v_1_1.py”,第93行,在uu init中__
>框架=F(容器,自身)
>文件“C:\Users\MainUser\source\v_1_1.py”,第2736行,在
>app=seaofbtcap()
已加载“\uuuu main\uuuuuu”

这看起来像是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)

希望这对你有用

这看起来像是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)

希望这对你有用

这不起作用,给了我同样的错误,但你的想法帮助我用另一种方式解决了它。我回到了我的原始代码,用list方法解决了我的第一个问题

#=============Use_List_For_Capturing_Var_In_Classes==================

Name_oF_User_Loged_In = []
Name_oF_User_Loged_In.append("User Name")

class StartPage(tk.Frame):

   global login_data_Pass
   global login_data_User
   global Name_oF_User_Loged_In

   def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
   #=============Set_Background==================>
   load1 = Image.open(Image_File +"\Login_Bcakground.png")
   render1 =ImageTk.PhotoImage(load1)

   def Login_Check():
                USER1 = self.Username_Text.get()
                PASSWORD1 = self.Password_Text.get()
                login_data_Pass.pop(0)
                login_data_User.pop(0)
                login_data_Pass.append(PASSWORD1)
                login_data_User.append(USER1) 

   #==== Creating Buttons, Entry Box and Labels with there commands =====>

   Login_button = tk.Button(self, text="Login", 
           fg="#d0cece",bg="#3f9a84",borderwidth = 0, font=Normal_Text,height 
           =1,width = 10,
           command=lambda: Login_Check())
   Login_button.place(x=1010,y=380)

   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)


class PageOne(tk.Frame):

  global login_data_Pass
  global login_data_User
  global Name_oF_User_Loged_In

  def __init__(self, parent, controller):
      tk.Frame.__init__(self, 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)

         user = login_data_User[0]
         password = login_data_Pass[0]

这不起作用,给了我同样的错误,但你的想法帮助我以另一种方式解决了它。我回到了我的原始代码,用list方法解决了我的第一个问题

#=============Use_List_For_Capturing_Var_In_Classes==================

Name_oF_User_Loged_In = []
Name_oF_User_Loged_In.append("User Name")

class StartPage(tk.Frame):

   global login_data_Pass
   global login_data_User
   global Name_oF_User_Loged_In

   def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
   #=============Set_Background==================>
   load1 = Image.open(Image_File +"\Login_Bcakground.png")
   render1 =ImageTk.PhotoImage(load1)

   def Login_Check():
                USER1 = self.Username_Text.get()
                PASSWORD1 = self.Password_Text.get()
                login_data_Pass.pop(0)
                login_data_User.pop(0)
                login_data_Pass.append(PASSWORD1)
                login_data_User.append(USER1) 

   #==== Creating Buttons, Entry Box and Labels with there commands =====>

   Login_button = tk.Button(self, text="Login", 
           fg="#d0cece",bg="#3f9a84",borderwidth = 0, font=Normal_Text,height 
           =1,width = 10,
           command=lambda: Login_Check())
   Login_button.place(x=1010,y=380)

   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)


class PageOne(tk.Frame):

  global login_data_Pass
  global login_data_User
  global Name_oF_User_Loged_In

  def __init__(self, parent, controller):
      tk.Frame.__init__(self, 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)

         user = login_data_User[0]
         password = login_data_Pass[0]

这不起作用,给了我同样的错误,但你的想法帮助我以另一种方式解决了它。我回到了我的原始代码,用list方法解决了我的第一个问题。谢谢。请将您的解决方案作为一个答案发布,以帮助其他人解决相同的问题。这不起作用,给了我相同的错误,但您的想法帮助我以另一种方式解决了它。我回到了我的原始代码,用list方法解决了我的第一个问题。谢谢。请将您的解决方案作为答案发布,以帮助解决相同问题的其他人。