Tkinter将背景图像调整为窗口大小

汤木

尝试为我的Tkinter窗口设置背景。我有一个方形的背景图像,该图像在边缘周围逐渐变为黑色,然后主窗口具有黑色背景。图像放置在背景上,并且如果窗口宽于其高度,则图像将自身居中于黑色背景的中间,这一切看起来都很好。

但是,当窗口的宽度和高度小于图像的宽度时,它将图像的中心置于窗口的中心,因此您看不到整个图像,并且看起来有些奇怪。有没有一种调整图像大小的方法,以便如果窗口的宽度和高度中的最大值小于图像,则将图像调整为该大小,并保持宽高比。

所以说背景图片是600x600

  • 800x400窗口中,图像不会调整大小,而是将自身垂直居中。
  • 500x400窗口中,图像将调整为500x500,并且仍将自身垂直居中。
  • 400x900窗口中,图像不会调整大小,而是将自身水平居中。

居中功能已经存在,我只需要调整大小功能。

目前我拥有的是:

from tkinter import *

root = Tk()
root.title("Title")
root.geometry("600x600")
root.configure(background="black")

background_image = PhotoImage(file="Background.gif")

background = Label(root, image=background_image, bd=0)
background.pack()

root.mainloop()

不确定在tkinter中是否有这样做的方法?或者,也许我会编写自己的函数来根据窗口大小调整图像大小,但是如果用户在任何时候调整窗口大小,则图像都需要相对平滑且快速地调整大小。

马辛

这是一个示例应用程序,它使用Pillow在标签更改大小时调整标签上图像的大小:

from tkinter import *

from PIL import Image, ImageTk

root = Tk()
root.title("Title")
root.geometry("600x600")
root.configure(background="black")



class Example(Frame):
    def __init__(self, master, *pargs):
        Frame.__init__(self, master, *pargs)



        self.image = Image.open("./resource/Background.gif")
        self.img_copy= self.image.copy()


        self.background_image = ImageTk.PhotoImage(self.image)

        self.background = Label(self, image=self.background_image)
        self.background.pack(fill=BOTH, expand=YES)
        self.background.bind('<Configure>', self._resize_image)

    def _resize_image(self,event):

        new_width = event.width
        new_height = event.height

        self.image = self.img_copy.resize((new_width, new_height))

        self.background_image = ImageTk.PhotoImage(self.image)
        self.background.configure(image =  self.background_image)



e = Example(root)
e.pack(fill=BOTH, expand=YES)


root.mainloop()

这是使用Lenna图像作为示例的工作方式:

在此处输入图片说明

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Tkinter网格管理器将背景图像调整为窗口大小

来自分类Dev

使用Tkinter网格管理器将背景图像调整为窗口大小

来自分类Dev

调整窗口大小时重复背景图像(背景重复为无重复)

来自分类Dev

调整窗口大小时重复背景图像(背景重复为无重复)

来自分类Dev

窗口大小后调整背景图像的大小

来自分类Dev

如何将Layout背景图像调整为centerInside?

来自分类Dev

Python Tkinter 将按钮大小调整为窗口大小

来自分类Dev

背景图像会自动调整大小

来自分类Dev

调整画布的背景图像大小-Fabricjs

来自分类Dev

调整大小时背景图像消失

来自分类Dev

将div的大小设置为其背景图像

来自分类Dev

将div的大小设置为其背景图像

来自分类Dev

调整图像大小为背景

来自分类Dev

背景图像不随窗口大小缩放

来自分类Dev

自动调整背景图像大小以适合较小的窗口和移动设备-HTML / CSS

来自分类Dev

整理2个在窗口调整大小时发生变化的背景图像(背景大小:封面)

来自分类Dev

easyimage:将调整大小的图像背景设置为透明

来自分类Dev

背景图像以调整大小为中心,缩放比例保持不变

来自分类Dev

在窗口调整大小时将具有百分比高度的背景图像转换为像素高度

来自分类Dev

调整<body>的大小以创建视口大小的背景图像

来自分类Dev

Div表带:将窗口调整至特定点后,背景图像开始缩小

来自分类Dev

调整div大小时将div背景图像裁剪到中间(它响应div)

来自分类Dev

调整div大小时将div背景图像裁剪到中间(它响应div)

来自分类Dev

使用File API将背景图片调整为div大小

来自分类Dev

调整窗口宽度时重复背景图像

来自分类Dev

如何使用Tkinter python 2.7将背景图像设置到窗口

来自分类Dev

如何使用Tkinter python 2.7将背景图像设置到窗口

来自分类Dev

调整画布的背景图像大小-Fabric.js

来自分类Dev

文本框悬停背景图像移动并调整大小

Related 相关文章

  1. 1

    使用Tkinter网格管理器将背景图像调整为窗口大小

  2. 2

    使用Tkinter网格管理器将背景图像调整为窗口大小

  3. 3

    调整窗口大小时重复背景图像(背景重复为无重复)

  4. 4

    调整窗口大小时重复背景图像(背景重复为无重复)

  5. 5

    窗口大小后调整背景图像的大小

  6. 6

    如何将Layout背景图像调整为centerInside?

  7. 7

    Python Tkinter 将按钮大小调整为窗口大小

  8. 8

    背景图像会自动调整大小

  9. 9

    调整画布的背景图像大小-Fabricjs

  10. 10

    调整大小时背景图像消失

  11. 11

    将div的大小设置为其背景图像

  12. 12

    将div的大小设置为其背景图像

  13. 13

    调整图像大小为背景

  14. 14

    背景图像不随窗口大小缩放

  15. 15

    自动调整背景图像大小以适合较小的窗口和移动设备-HTML / CSS

  16. 16

    整理2个在窗口调整大小时发生变化的背景图像(背景大小:封面)

  17. 17

    easyimage:将调整大小的图像背景设置为透明

  18. 18

    背景图像以调整大小为中心,缩放比例保持不变

  19. 19

    在窗口调整大小时将具有百分比高度的背景图像转换为像素高度

  20. 20

    调整<body>的大小以创建视口大小的背景图像

  21. 21

    Div表带:将窗口调整至特定点后,背景图像开始缩小

  22. 22

    调整div大小时将div背景图像裁剪到中间(它响应div)

  23. 23

    调整div大小时将div背景图像裁剪到中间(它响应div)

  24. 24

    使用File API将背景图片调整为div大小

  25. 25

    调整窗口宽度时重复背景图像

  26. 26

    如何使用Tkinter python 2.7将背景图像设置到窗口

  27. 27

    如何使用Tkinter python 2.7将背景图像设置到窗口

  28. 28

    调整画布的背景图像大小-Fabric.js

  29. 29

    文本框悬停背景图像移动并调整大小

热门标签

归档