ITwTI
ITwTI

Reputation: 25

NameError: name 'PhotoImage' is not defined, dont know how to add image

I'm trying to add a background image to the window but I can't. I tried almost every way I know...

class main:
    def __init__(self):
        global lol
        self.rip = tk.Tk()
        self.f2 = tk.Frame(self.rip)
        self.f2.grid(column=0, row=0, sticky=("nwes"))
        self.f2.columnconfigure(0, weight=1)
        self.f2.rowconfigure(0, weight=1)
        self.c1=tk.Label(self.f2, text="feet to meter or meter to feet?")
        self.c1.grid(row=0, column=0)
        self.c2=tk.Label(self.f2, text='type "ft" for feet to meter, type "m" for meter to feet')
        self.c2.grid(row=1, column=0)
        lol = tk.StringVar()
        self.choice = tk.Entry(self.f2, width=7, textvariable=lol)
        self.choice.grid(row=2, column=0)
        self.b1=tk.Button(self.f2, text="Confirm", command=choose)
        self.b1.grid(row=3, column=0)
        self.bg = PhotoImage(file="bgmain.gif")
        tk.Label(self,image=self.bg).pack()
        self.pack(side="top")

The error message says:
NameError: name 'PhotoImage' is not defined.
How can PhotoImage not be defined???

Upvotes: 0

Views: 16828

Answers (3)

I want to add an image to the background of my app! How do I do that?

class HomePage: def init(self): self.homePageWindow = tkinter.Tk() self.homePageWindow.wm_title("T") self.homePageWindow.iconbitmap(r'20.ico') self.homePageWindow.geometry("540x540+0+0") self.homePageWindow.configure(background='Gray')

    tkinter.Label(self.homePageWindow,font=('Titr',20),text = "t",bd=1,bg='Gray',fg='Yellow').grid(pady = 10,padx=10, column = 4, row = 1,sticky='e')

    tkinter.Button(self.homePageWindow, width = 10,height=2, font=('Nazanin',12,'bold'),  text = "Insert",bd=3,bg='brown',fg='yellow', command = self.Insert).grid(pady = 14,padx=14,column =4, row = 2)
    tkinter.Button(self.homePageWindow, width = 10,height=2,font=('Nazanin',12,'bold'),  text = "Update",bd=3,bg='brown',fg='yellow', command = self.Update).grid(pady = 10,padx=14,  column = 5, row = 3)
    tkinter.Button(self.homePageWindow, width = 10,height=2, font=('Nazanin',12,'bold'), text = "Search",bd=3,bg='brown',fg='yellow', command = self.Search).grid(pady = 10,padx=7, column = 3, row = 5)
    tkinter.Button(self.homePageWindow, width = 10,height=2,font=('Nazanin',12,'bold'),  text = "حذف",bd=3,bg='brown',fg='yellow', command = self.Delete).grid(pady = 10,padx=7, column = 3, row =3)
    tkinter.Button(self.homePageWindow, width = 10,height=2,font=('Nazanin',12,'bold'),  text = "Display",bd=3,bg='brown',fg='yellow', command = self.Display).grid(pady = 12,padx=7, column = 4, row = 8)
    tkinter.Button(self.homePageWindow, width = 10,height=2,font=('Nazanin',12,'bold'), text = "Exit",bd=3,bg='brown',fg='yellow', command =  self.homePageWindow.destroy).grid(pady = 10,padx=7, column = 5, row = 5)


    self.homePageWindow.mainloop()

def Insert(self):
    self.insertWindow = InsertWindow()

def Update(self):
    self.updateIDWindow = tkinter.Tk()
    self.updateIDWindow.wm_title("Update")


    self.id = tkinter.StringVar()


    tkinter.Label(self.updateIDWindow, text = "id ?", width = 50).grid(pady = 20, row = 1)


    self.idEntry = tkinter.Entry(self.updateIDWindow, width = 5, textvariable = self.id)

    self.idEntry.grid(pady = 10, row = 2)


    tkinter.Button(self.updateIDWindow, width = 20, text = "update",bd=3,bg='brown',fg='yellow', command = self.updateID).grid(pady = 10, row = 3)

    self.updateIDWindow.mainloop()

def updateID(self):
    self.updateWindow = UpdateWindow(self.idEntry.get())
    self.updateIDWindow.destroy()

def Search(self):
    self.searchWindow = SearchDeleteWindow("Search")

def Delete(self):
    self.deleteWindow = SearchDeleteWindow("Delete")

def Display(self):
    self.database = Database()
    self.data = self.database.Display()
    self.displayWindow = DatabaseView(self.data)

homePage = HomePage()

Upvotes: 0

HavelTheGreat
HavelTheGreat

Reputation: 3386

PhotoImage is not in your global namespace. Alternatively to accessing it with tkinter.PhotoImage, you can import PhotoImage into the global namespace with:

from tkinter import PhotoImage

Upvotes: 0

Brionius
Brionius

Reputation: 14098

The PhotoImage class is part of the Tkinter module, just like all the other Tkinter classes you're calling (Label, StringVar, Button, etc). You haven't loaded PhotoImage into the global namespace, so you can't access it simply with PhotoImage. Try tk.PhotoImage instead.

self.bg = tk.PhotoImage(file="bgmain.gif")
#         ^^^

Upvotes: 4

Related Questions