This is the format of code I currently have:
import Tkinter as tk
class mycustomwidow:
    def __init__(self,parent,......)
        ......
        ......
        tk.Label(parent,image=Myimage)
        tk.pack(side='top')
def main():
    root=tk.Tk()
    mycustomwindow(root)
    root.mainlopp()
if __name__ == '__main__':
    main()
My problem is: Where should I declare the photo Myimage that I used in my class mycustomwindow?
If I put Myimage=tk.PhotoImage(data='....') before the root=tk.Tk() like below, it will give me the too early to create image error as we can't create an image before the root window.
import Tkinter as tk
Myimage=tk.PhotoImage(data='....') 
class mycustomwidow:
    def __init__(self,parent,......)
        ......
        ......
        tk.Label(parent,image=Myimage)
        tk.pack(side='top')
def main():
    root=tk.Tk()
    mycustomwindow(root)
    root.mainlopp()
if __name__ == '__main__':
    main()
If I put Myimage=tk.PhotoImage(data='....') in the function main() like this, it says it can't find the image Myimage in class mycustomwindow.
import Tkinter as tk
class mycustomwidow:
    def __init__(self,parent,......)
        ......
        ......
        tk.Label(parent,image=Myimage)
        tk.pack(side='top')
def main():
    root=tk.Tk()
    Myimage=tk.PhotoImage(data='....')
    mycustomwindow(root)
    root.mainlopp()
if __name__ == '__main__':
    main()
Is there anything badly wrong with my code structure? Where should I declare Myimage so that it can be used in class mycustomwindow?
 
     
    