如何调整图像大小以适合标签尺寸?(Python)

里斯·明钦(Rhys Minchin)

我的目标是创建一个随机的国家/地区生成器,然后将显示所选择的国家/地区的标志。但是,如果图像文件大于标签的预定大小,则仅显示图像的一部分。有没有办法调整图像大小以适合标签?(我看到的所有其他类似问题均已回答,提到了PIL或Image模块。我对它们都进行了测试,并且都提出了此错误:

追溯(最近一次调用):文件“ C:\ python \ country.py”,导入PIL中的第6行ImportError:没有名为“ PIL”的模块

这是我的代码,如果有帮助的话:

import tkinter
from tkinter import *
import random

flags = ['England','Wales','Scotland','Northern Ireland','Republic of Ireland']

def newcountry():

    country = random.choice(flags)
    flagLabel.config(text=country)
    if country == "England":
        flagpicture.config(image=England)
    elif country == "Wales":
        flagpicture.config(image=Wales)
    elif country == "Scotland":
        flagpicture.config(image=Scotland)
    elif country == "Northern Ireland":
        flagpicture.config(image=NorthernIreland)
    else:
        flagpicture.config(image=Ireland)

root = tkinter.Tk()
root.title("Country Generator")

England = tkinter.PhotoImage(file="england.gif")
Wales = tkinter.PhotoImage(file="wales.gif")
Scotland = tkinter.PhotoImage(file="scotland.gif")
NorthernIreland = tkinter.PhotoImage(file="northern ireland.gif")
Ireland = tkinter.PhotoImage(file="republic of ireland.gif")
blackscreen = tkinter.PhotoImage(file="black screen.gif")

flagLabel = tkinter.Label(root, text="",font=('Helvetica',40))
flagLabel.pack()

flagpicture = tkinter.Label(root,image=blackscreen,height=150,width=150)
flagpicture.pack()

newflagButton = tkinter.Button(text="Next Country",command=newcountry)
newflagButton.pack()

除了仅显示图像的一部分之外,该代码还可以正常工作。有没有办法在代码本身中调整图像的大小?(我正在使用Python 3.5.1)

Pythonista

如果您尚未安装PIL,则首先需要安装

pip install pillow

安装后,您现在可以从PIL导入:

from PIL import Image, ImageTk

Tk的PhotoImage只能显示.gif,而PIL的ImageTk可以让我们在tkinter中显示各种图像格式,而PIL的Image类提供了resize一种可用于调整图像大小的方法。

我将您的代码精简了一些。

您可以调整图像的大小,然后仅配置标签,标签将扩展为图像的大小。如果为标签指定了特定的高度和宽度,请说出height=1width=1,然后将图像的大小调整为500x500,然后配置小部件。由于您已明确设置这些属性,因此它仍将显示1x1标签。

在下面的代码中,修改字典,在遍历字典时修改字典是不可行的。dict.items()返回dict的副本。

有多种方法可以做到这一点,尽管我在这里很方便。

链接到超出高度/宽度限制的图像-kitty.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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使网站(图像/表格)按比例调整大小以适合屏幕尺寸

来自分类Dev

调整chrome主题图像的大小以适合屏幕尺寸

来自分类Dev

调整图像大小以适合JLabel

来自分类Dev

调整 UICollectionViewCell 的大小以适合图像

来自分类Dev

调整UITableViewCell的大小以适合不同的屏幕尺寸

来自分类Dev

图像尺寸未重新调整以适合Flexbox

来自分类Dev

如何使图像自动调整大小以适合边缘之间的线?

来自分类Dev

如何调整背景图像的大小以适合网页?

来自分类Dev

如何使用CSS调整图像大小以适合其容器

来自分类Dev

如何调整图像大小以使其适合CSS容器?

来自分类Dev

如何调整图像大小以设置为适合屏幕的墙纸

来自分类Dev

如何使视图父组件调整大小以适合子图像组件

来自分类Dev

在网格中调整图像大小以使div适合较小的尺寸

来自分类Dev

Flutter是否会自动调整元素(图标,图像等)的大小以适合屏幕尺寸?

来自分类Dev

调整图像大小,使其适合屏幕大小

来自分类Dev

CSS / JS调整大小以适合图像大小

来自分类Dev

如何根据屏幕尺寸调整网格图像的大小?

来自分类Dev

如何在Python中使图像适合标签

来自分类Dev

如何在Python中使图像适合标签

来自分类Dev

iPhone-调整图像大小和两个标签以适合屏幕大小

来自分类Dev

调整图像内容的大小,但保持图像尺寸

来自分类Dev

在Swift中调整文本大小以适合标签

来自分类Dev

Nivo Slider如何自动调整大小以适合不同的视口尺寸?

来自分类Dev

如何调整UILabel的高度以适合尺寸?

来自分类Dev

Swift:如何将图像设置为适合标签尺寸的标签?

来自分类Dev

PHP调整图像大小以适合特定区域

来自分类Dev

调整图像大小以适合jLabel故障

来自分类Dev

调整图像大小以适合画布-Gimp

来自分类Dev

jQuery-调整图像大小以适合div

Related 相关文章

  1. 1

    如何使网站(图像/表格)按比例调整大小以适合屏幕尺寸

  2. 2

    调整chrome主题图像的大小以适合屏幕尺寸

  3. 3

    调整图像大小以适合JLabel

  4. 4

    调整 UICollectionViewCell 的大小以适合图像

  5. 5

    调整UITableViewCell的大小以适合不同的屏幕尺寸

  6. 6

    图像尺寸未重新调整以适合Flexbox

  7. 7

    如何使图像自动调整大小以适合边缘之间的线?

  8. 8

    如何调整背景图像的大小以适合网页?

  9. 9

    如何使用CSS调整图像大小以适合其容器

  10. 10

    如何调整图像大小以使其适合CSS容器?

  11. 11

    如何调整图像大小以设置为适合屏幕的墙纸

  12. 12

    如何使视图父组件调整大小以适合子图像组件

  13. 13

    在网格中调整图像大小以使div适合较小的尺寸

  14. 14

    Flutter是否会自动调整元素(图标,图像等)的大小以适合屏幕尺寸?

  15. 15

    调整图像大小,使其适合屏幕大小

  16. 16

    CSS / JS调整大小以适合图像大小

  17. 17

    如何根据屏幕尺寸调整网格图像的大小?

  18. 18

    如何在Python中使图像适合标签

  19. 19

    如何在Python中使图像适合标签

  20. 20

    iPhone-调整图像大小和两个标签以适合屏幕大小

  21. 21

    调整图像内容的大小,但保持图像尺寸

  22. 22

    在Swift中调整文本大小以适合标签

  23. 23

    Nivo Slider如何自动调整大小以适合不同的视口尺寸?

  24. 24

    如何调整UILabel的高度以适合尺寸?

  25. 25

    Swift:如何将图像设置为适合标签尺寸的标签?

  26. 26

    PHP调整图像大小以适合特定区域

  27. 27

    调整图像大小以适合jLabel故障

  28. 28

    调整图像大小以适合画布-Gimp

  29. 29

    jQuery-调整图像大小以适合div

热门标签

归档