Ttk背景图片

Ttk background image

有什么方法可以使用 PIL 将图像导入 python 并将其设置为跨越整个 Tkinter 根 window 的 ttk 大型机的背景?截至目前,我只看到了执行此操作的方法是 Tkinter 根目录。另外有没有办法让ttk自己调整图片的大小,这样即使小也能覆盖整个屏幕?

总而言之,我想要一个图像覆盖整个 ttk 大型机框,而不会干扰我在 ttk 框架中放置任何其他内容。

例如 如果图片覆盖了整个 window,一个命令,

ttk.Button(root, text="Hello").grid(column=0, row=0, sticky=(N,S,W,E))

仍然会在主机中插入一个按钮。谢谢:)

您不能将图像背景设置为 ttk 框架,它们不接受图像选项。所以你可以制作一个 ttk 框架并在其中放置一个标签或其他东西,然后让它跨越适应下面示例的框架。

这是一个演示您想要的东西的小示例。我们使用 pil 加载图像,请注意链接的图像将小于(我希望)您的屏幕尺寸。

因此,我们将根 window 的几何形状设置为整个屏幕图像小于此尺寸,因此我们调整其大小以覆盖整个宽度。您可以覆盖最大和最小高度,然后根据此进行设置。只是一个样本值。然后我们将 bg 标签和网格小部件放在它上面。该标签的堆叠顺序低于您将放置在网格中的其他小部件,因此它们出现在顶部。或者,您可以使用 canvas 或其他小部件。使用 canvas,您必须使用 create_window 将小部件放置在 canvas。

import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk

root = tk.Tk()
width, height = root.winfo_screenwidth(), root.winfo_screenheight()
#print(root.winfo_screenheight(), root.winfo_screenwidth())
root.geometry("%dx%d" % (width, height))
#URL FOR BACKGROUND
#https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=0ahUKEwiVroCiyZHMAhXKeT4KHQHpDVAQjBwIBA&url=http%3A%2F%2Fwallpaperswide.com%2Fdownload%2Fblack_background_metal_hole_very_small-wallpaper-800x480.jpg&psig=AFQjCNEjZ7GDbjG9sFie-yXW3fP85_p0VQ&ust=1460840934258935
image = Image.open("background.jpg")
if image.size != (width, height):
    image = image.resize((width, height), Image.ANTIALIAS)
    #print("DONE RESIZING")
    # image.save("background.jpg")
#print(image.size)
image = ImageTk.PhotoImage(image)
bg_label = tk.Label(root, image = image)
bg_label.place(x=0, y=0, relwidth=1, relheight=1)
bg_label.image = image
your_button = ttk.Button(root, text='This is a button')
your_button.grid()
root.mainloop()