fernando
fernando

Reputation: 99

python importing file but image not recognized

I have created one python file with a drowdown menu. When i choose the option one, it imports another python file, with a checkbutton and a picture in a canvas. Both files and the picture are located in the same folder. The code import the file imports the canvas and the checkbutton, but I get the error saying image "pyimage1" doesn't exist. If I run that second file alone, it does show the checkbutton and the image without errors. When Import a python file the images are not recognized anymore or am I doing something wrong? is any workaround there?

main program:

from tkinter import *

root = Tk()
root.geometry('1560x750')

canvas=Canvas(root)
canvas.config(width=1000, height=1560, bg='light grey')
canvas.grid(row=1,column=3, rowspan=1550,ipadx=1300,ipady=750,sticky=NW)

def option_number(x):
    if x == "one":
        import part2

variable = StringVar()
variable.set("options")
w = OptionMenu(canvas, variable, "one", "two",command = option_number)
w.config(width=15, height=1,bg='blue')
w.place(x=400,y=100)

root.mainloop()

file to be imported:

from tkinter import *

root = Tk()
root.geometry('1560x750')

canvas=Canvas(root)
canvas.config(width=1000, height=1560, bg='light grey')
canvas.grid(row=1,column=3, rowspan=1550,ipadx=1300,ipady=750,sticky=NW)

button = Checkbutton(canvas).place(x=170, y=230)
AND_gate=PhotoImage(file='AND.png') #set up variables for and_gate
labelimage_and = Label(canvas, image=AND_gate).place(x=200,y=200)

root.mainloop()

Updated code to import function:

from tkinter import *

root = Tk()
root.geometry('1560x750')

canvas=Canvas(root)
canvas.config(width=1000, height=1560, bg='light grey')
canvas.grid(row=1,column=3, rowspan=1550,ipadx=1300,ipady=750,sticky=NW)

def option_number(x):
    if x == "one":
        from part1 import import_def

variable = StringVar()
variable.set("options")
w = OptionMenu(canvas, variable, "one", "two",command = option_number)
w.config(width=15, height=1,bg='blue')
w.place(x=400,y=100)

root.mainloop()

file where is the function to be imported:

from tkinter import *
root = Tk()

def import_def():
    root = Toplevel()
    root.geometry('1560x750')
    canvas2 = Canvas(root)
    canvas2.config(width=1000, height=1560, bg='red')
    canvas2.grid(row=1, column=3, rowspan=1550, ipadx=1300, ipady=750, sticky=NW)

    button = Checkbutton(canvas2).place(x=170, y=230)
    AND_gate=PhotoImage(file='AND.png') #set up variables for and_gate
    labelimage_and = Label(canvas2, image=AND_gate).place(x=200,y=200)

root.mainloop()

Upvotes: 0

Views: 194

Answers (1)

Delrius Euphoria
Delrius Euphoria

Reputation: 15098

This is the way that I know on how to import files and functions within tkinter, not sure if this is the right way but take a look at the changes I made to both the files

main.py:

from tkinter import *
from function import import_def

root = Tk()
root.geometry('1560x750')

canvas=Canvas(root)
canvas.config(width=1000, height=1560, bg='light grey')
canvas.grid(row=1,column=3, rowspan=1550,ipadx=1300,ipady=750,sticky=NW)

def option_number(x):
    if x == "one":
        import_def()

variable = StringVar()
variable.set("options")
w = OptionMenu(canvas, variable, "one", "two",command = option_number)
w.config(width=15, height=1,bg='blue')
w.place(x=400,y=100)

root.mainloop()

and function.py:

from tkinter import *

def import_def():
    root = Toplevel()
    root.geometry('1560x750')
    canvas2 = Canvas(root)
    canvas2.config(width=1000, height=1560, bg='red')
    canvas2.grid(row=1, column=3, rowspan=1550, ipadx=1300, ipady=750, sticky=NW)

    button = Checkbutton(canvas2).place(x=170, y=230)
    AND_gate=PhotoImage(file='sad songs.jpg') #set up variables for and_gate
    labelimage_and = Label(canvas2, image=AND_gate).place(x=200,y=200)

    root.mainloop()

Hope it was of some help, do let me know if any doubts or errors.

Cheers

Upvotes: 1

Related Questions