首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ttk背景图像

Ttk背景图像
EN

Stack Overflow用户
提问于 2016-04-15 20:50:21
回答 1查看 2.9K关注 0票数 0

有没有办法使用PIL将图像导入python,并将其设置为跨Tkinter根窗口的ttk大型机的背景?到目前为止,我只看到了这样做的方法是一个Tkinter根。另外,有没有办法让ttk自我调整图像的大小,这样即使它很小,也可以覆盖整个屏幕吗?

因此,总而言之,我想要一个图像来覆盖整个ttk主机框,而不需要在ttk框架中添加任何其他内容。

例如,如果pic覆盖了整个窗口,则为命令,

代码语言:javascript
复制
ttk.Button(root, text="Hello").grid(column=0, row=0, sticky=(N,S,W,E))

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-15 21:26:30

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

下面是一个演示您想要的东西的小例子。我们用pil加载一个图像,注意链接的图像将比您的屏幕大小更小(我希望)。

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

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36656589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档