我有一个简单的GUI试用版,我希望在屏幕上显示少量图像。我首先设置窗口,灰色方块,并调整所需的图像大小,现在我想把它放在框架上:
img = [img_resize(yellow_square, img_size), "text"]
base_panel = Label(root, image = img[0])
base_txt = Label(root, text = img[1])
base_panel.grid(row = x, column = y)
base_txt.grid (row = x, column = y)
...
for im in ls:
panel = Label(root, image = im[0])
panel.grid(row = x+im[1][1], column = y+im[1][2])
txt = Label(root, text = im[2])
txt.grid(row = x+im[1][1], column = y+im[1][2], sticky = 'S')
ls
是一个列表 [image(使用Image.open(img)
),位置偏移,文字]
我想我的image = ...
出了点问题,但我不明白是什么,因为我把这些行复制到main后我的代码正常工作。主要有另一个图像,所以这可能会以某种方式影响吗?
这是来自main的代码:
for im in background: # background is a list of gray squares
# some manipulation an a,b
panel = Label(root, image = im)
panel.grid(row = a, column = b)
这里应该是函数调用或行本身
答案 0 :(得分:1)
这是一个常见问题。你必须保持对图像的引用,否则python会从内存中删除它。如果您不在函数中,则变量是一个全局变量,它保留引用。但是在一个函数中你需要做这样的事情:
panel = Label(root)
panel.img = im[0]
panel.config(image = panel.img)