所以我使用Tkinter在python中创建了一个脚本,事实是第一个Tkinter窗口弹出没有问题但是当代码进入第二个窗口时它说:
_tkinter.TclError:图片“pyimage1”不存在
我找不到任何帮助我的东西,有人可以帮助我吗? 这是代码:
from Tkinter import *
from PIL import ImageTk, Image
def choose():
global name, chosen
name = name1.get()
chosen = chosen1.get()
print name
print chosen
root0.quit()
root0 = Tk()
name1 = Entry(root0)
name1.pack()
chosen1 = Entry(root0)
chosen1.pack()
Button(root0, text="ENTER", command=choose).pack()
root0.mainloop()
root = Tk()
img = ImageTk.PhotoImage(Image.open('person1.png'))
panel1 = Label(root, image = img)
panel1.pack(side="left")
img2 = ImageTk.PhotoImage(Image.open('person2.png'))
panel2 = Label(root, image = img2)
panel2.pack(side="right")
root.mainloop()
顺便说一句,python版本是2.7
答案 0 :(得分:0)
这是使用2个根(Tk()
个实例)的副作用。图像默认与第一个根窗口关联。快速解决方法是为图像提供正确的根目录:
img2 = ImageTk.PhotoImage(Image.open('person2.png'), master=root)
正确的解决方法是永远不要使用多个Tk()
。将所有代码放入Frame实例中,然后在时机成熟时销毁一个并加载另一个:
import Tkinter as tk
def choose():
global name, chosen
name = name1.get()
chosen = chosen1.get()
print name
print chosen
frame0.destroy() # kill this frame
frame1.pack() # open new frame
root = tk.Tk()
frame0 = tk.Frame(root)
name1 = tk.Entry(frame0)
name1.pack()
chosen1 = tk.Entry(frame0)
chosen1.pack()
tk.Button(frame0, text="ENTER", command=choose).pack()
frame1 = tk.Frame(root)
img = ImageTk.PhotoImage(Image.open('person1.png'))
panel1 = tk.Label(frame1, image = img)
panel1.pack(side="left")
img2 = ImageTk.PhotoImage(Image.open('person2.png'))
panel2 = tk.Label(frame1, image = img2)
panel2.pack(side="right")
#start the program
frame0.pack() # load frame0
root.mainloop()
注意我也让你远离邪恶的通配符导入(from module import *
)。