如果你没有安装PIL,首先需要安装
pip install pillow
安装完成后,您现在可以从 PIL 导入:
from PIL import Image, ImageTk
Tk 的 PhotoImage 只能显示 .gif,而 PIL 的 ImageTk 可以让我们在 tkinter 中显示各种图像格式,并且 PIL 的 Image 类有一个resize
我们可以使用方法来调整图像大小。
我把你的代码删减了一些。
您可以调整图像大小,然后只需配置标签,标签将扩展到图像的大小。如果您给标签指定了特定的高度和宽度,可以说height=1
and width=1
然后将图像大小调整为 500x500,然后配置小部件。由于您已显式设置这些属性,它仍会显示 1x1 标签。
在下面的代码中,修改字典,在迭代字典时修改它是不行的。 dict.items() 返回字典的副本。
有多种方法可以做到这一点,我只是觉得听写在这里很方便。
链接到超出高度/宽度限制的图像 https://media.giphy.com/media/fts60w6387eus/giphy.gif- 小猫.gif
from tkinter import *
import random
from PIL import Image, ImageTk
WIDTH, HEIGHT = 150, 150
flags = {
'England': 'england.gif',
'Wales': 'wales.gif',
'Kitty': 'kitty.gif'
}
def batch_resize():
for k, v in flags.items():
v = Image.open(v).resize((WIDTH, HEIGHT), Image.ANTIALIAS)
flags[k] = ImageTk.PhotoImage(v)
def newcountry():
country = random.choice(list(flags.keys()))
image = flags[country]
flagLabel['text'] = country
flagpicture.config(image=image)
if __name__ == '__main__':
root = Tk()
root.configure(bg='black')
batch_resize()
flagLabel = Label(root, text="", bg='black', fg='cyan', font=('Helvetica',40))
flagLabel.pack()
flagpicture = Label(root)
flagpicture.pack()
newflagButton = Button(root, text="Next Country", command=newcountry)
newflagButton.pack()
root.mainloop()