我有一个启动器应用程序,它假设使用一个按钮从单独的模块调用函数。我有一个名为“image_viewer”的模块,其中包含一个类函数,该类函数假定在单击按钮后显示图像。image_viewer函数在其原始模块中工作正常,但当我尝试从启动程序模块调用它时,收到错误“\u tkinter.TclError:image“pyimage1”不存在”。我已经包括了我的启动程序和图像查看器模块的代码,供您在下面参考
图像\u查看器模块:
from PIL import ImageTk, Image
import tkinter as tk
class ImageViewer:
def __init__(self, root, image_filename):
self.root = root
self.image_filename = image_filename
self.root.title('ImageViewer')
self.root.geometry('400x350')
self.canvas = tk.Canvas(self.root, width=300, height=300)
self.canvas.place(x=10, y=10)
self.btnView = tk.Button(text='View', command=self.view_image)
self.btnView.place(x=20, y=265)
self.btnClose = tk.Button(text='close', command=lambda:[self.destroy(), self.clear()])
self.btnClose.place(x=65, y=265)
def view_image(self):
self.img = ImageTk.PhotoImage(Image.open(self.image_filename)) # Keep ref to image.
self.canvas.create_image(20, 20, anchor=tk.NW, image=self.img)
def destroy(self):
self.root.destroy()
def clear(self):
self.btnClose.destroy()
self.btnView.destroy()
def main(image_filename):
root = tk.Tk()
ImageViewer(root, image_filename)
root.mainloop()
if __name__ == '__main__':
main('../raw/as.png')
启动器模块:
from audioplayer import audioplayer
from texteditor import editor
from imageviewer import image_viewer
import tkinter as tk
class Launcher:
def __init__(self, win):
self.root = win
self.root.title('Launcher')
self.root.geometry('400x350')
self.btnEditor = tk.Button(text='Editor', command=self.editor, padx=10)
self.btnEditor.pack(side=tk.LEFT)
self.btnEditor.place(x=5, y=315)
self.btnAudio = tk.Button(text='AudioPlayer', command=self.audioplayer, padx=10)
self.btnAudio.pack(side=tk.LEFT)
self.btnAudio.place(x=75, y=315)
self.btnImage = tk.Button(text='ImageViewer', command=self.imageviewer, padx=10)
self.btnImage.pack(side=tk.LEFT)
self.btnImage.place(x=178, y=315)
self.quit_button = tk.Button(text = "Quit", command=self.quit, padx=10)
self.quit_button.pack(side=tk.LEFT)
self.quit_button.place(x=340, y=315)
def editor(self):
editor.main()
def audioplayer(self):
audioplayer.main()
def imageviewer(self):
image_viewer.main('../raw/as.png')
def quit(self):
self.root.destroy()
def main():
root = tk.Tk()
Launcher(root)
root.mainloop()
if __name__ == '__main__':
main()
目前没有回答
相关问题 更多 >
编程相关推荐