gpt4 book ai didi

python - 使用 Label 和 .place() 时,为什么 tkinter 根背景不设置为 BMP 图像?

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:08 24 4
gpt4 key购买 nike

根据几篇 SO 帖子的建议,我创建了一个 Label.place() 一张 BMP 图片作为窗口的背景。不幸的是,它不起作用,因为图片没有出现。

import Tkinter as tk

root = tk.Tk()
root.geometry("200x200")
# generic background
root.tk_setPalette(background='black', foreground='white')
# the background I want to have (but it does not appear)
background_image = tk.PhotoImage("background.bmp")
background_label = tk.Label(root, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
# a label with a long text which will be shortened afterwards
mylabel = tk.Label(root, text="a long text", font=("Arial", 30))
mylabel.grid(column=0, row=0)
# the text is shortened to make sure the background adapts
mylabel.configure(text="short")

root.mainloop()
上面的

background.bmp与窗口大小相同(200x200):

enter image description here

运行代码时我得到:

enter image description here

而不是(减去框架)

enter image description here

我在代码中添加了标签中显示的文本更改,以确保背景适应(= 如果文本更改,则在下面恢复原始背景)

最佳答案

来自帮助(Tk.PhotoImage):

Widget which can display colored images in GIF, PPM/PGM format.

因此,您需要将图像保存为 GIF 或可移植位图 (PPM/PGM)。

接下来,我认为您将 PILImageTk.PhotoImage 类与 Tkinter 的内置 混合在一起tk.PhotoImage 类。 tk.PhotoImage 类需要在其构造函数中分配一个 name 参数:

 |  __init__(self, name=None, cnf={}, master=None, **kw)
| Create an image with NAME.
|
| Valid resource names: data, format, file, gamma, height, palette,
| width.

所以你只需要指定文件,如下所示:

background_image = tk.PhotoImage(file="background.gif")

但是,稍后您会遇到另一个问题,因为您会发现 Label 小部件具有不透明的背景颜色,因此它不会像您预期的输出那样显示。您可以通过使用 Canvas 小部件来保存背景并使用它的 create_text() 方法在背景上制作文本来克服这个问题。

编辑:这是一个使用 Canvas 制作背景的简单示例,它将保留文本的透明度:

from Tkinter import *

root = Tk()

canvas = Canvas(root, width=200, height=200)
canvas.pack(fill=BOTH, expand=1)

bg = PhotoImage(file='background.gif')
canvas.create_image(0, 0, image=bg)

canvas.create_text(50, 50, text='Short')

root.mainloop()

关于python - 使用 Label 和 .place() 时,为什么 tkinter 根背景不设置为 BMP 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com