【发布时间】:2021-07-18 04:39:45
【问题描述】:
在下面的代码中,我尝试使用 Canvas 将两个图像放在两个单独的窗口框架上
PANEL_HEIGHT = 440
PANEL_WIDTH = 304
BKG_IMG = "./backgrounds/Wireframe- welcome screen – 1.png"
MANAGE_ACC_BKG_IMG = "./backgrounds/Wireframe- welcome screen – 1.png"
class window1:
def __init__(self):
self.panel = Tk()
self.panel.geometry(f"{PANEL_WIDTH}x{PANEL_HEIGHT}")
self.canvas = Canvas(self.panel,width=2*PANEL_WIDTH, height=2*PANEL_HEIGHT)
canvas = self.canvas
img = PhotoImage(file=BKG_IMG)
canvas.create_image(PANEL_WIDTH,PANEL_HEIGHT,image=img)
canvas.place(x=-(PANEL_WIDTH/2),y=-(PANEL_HEIGHT/2))
class window2:
def __init__(self):
self.panel = Tk()
self.panel.geometry(f"{PANEL_WIDTH}x{PANEL_HEIGHT}")
self.canvas = Canvas(self.panel, width=2 * PANEL_WIDTH, height=2 * PANEL_HEIGHT)
canvas = self.canvas
img = PhotoImage(file=MANAGE_ACC_BKG_IMG)
canvas.create_image(PANEL_WIDTH, PANEL_HEIGHT, image=img)
canvas.place(x=-(PANEL_WIDTH / 2), y=-(PANEL_HEIGHT / 2))
window1()
window2()
在调用这两个类时,我收到“图像 'pyimage2' 不存在”错误
两个文件的绝对路径是
D:\pyAut\pythonBootCamp\backgrounds\manage_acc_ui_bkg.png D:\pyAut\pythonBootCamp\main.py
谁能告诉我如何完成任务????
【问题讨论】:
-
您调用
Tk()超过使用(您必须使用Toplevel()来创建其他窗口,并且您没有保存对您的 PhotoImage 对象的引用(因此它们将立即垃圾收集)。 -
如何保存对 PotoImage 的引用??
-
感谢您的支持
标签: python user-interface tkinter background-image tkinter-canvas