【发布时间】:2019-06-26 21:23:10
【问题描述】:
我在尝试创建画布图像时遇到了一些问题,一个类处理图像的创建,我希望该类创建与我调用它的时间一样多的图像。
我的代码是这样的
from tkinter import *
from random import *
canvas_width = 800
canvas_height = 800
master = Tk()
canvas = Canvas(master, width=canvas_width, height=canvas_height, bg="black")
canvas.pack()
def images():
for _ in range(3):
Image_creator().create_image()
class Image_creator:
def create_image(self):
start_x = randint(1, canvas_width//2)
start_y = randint(1, canvas_height//2)
img = PhotoImage(file="pac_inizio.png")
master.img = img
self.image = canvas.create_image(start_x, start_y, anchor=NW, image=img)
images()
mainloop()
实际上,这段代码只显示了 3 个图像中的 1 个,我认为其他 2 个画布图像已创建但内部没有图像。 我尝试将 create_image 函数更改为创建按钮而不是画布图像,并了解它是否真的像我想的那样。 如果你使用修改后的函数运行代码,它会显示 3 个按钮,但只有一个按钮带有图像。
def create_image(self):
start_x = randint(1, canvas_width//2)
start_y = randint(1, canvas_height//2)
img = PhotoImage(file="pac_inizio.png")
master.img = img
self.image = Button( anchor=NW, image=img)
self.image.place(x=start_x, y=start_y)
我认为问题出在图片参考中,但不知道如何解决
【问题讨论】:
-
我认为问题在于
master.img = img您在任何时候都只能引用一个图像; otehrs 是垃圾收集的。尝试制作master.img列表或类似的东西。 (另外,为create_image方法创建一个类似乎毫无意义。)