Как добавить фоновое изображение в приложение tkinter?

#python-3.x #tkinter #canvas #label

Вопрос:

Недавно я создал приложение для просмотра на Python. Но это выглядит очень скучно из-за одноцветного фона и ничего, кроме времени и даты. Поэтому я хотел добавить фон в приложение. И я столкнулся с проблемой: если я просто упакую изображение в этикетку, другие этикетки не будут прозрачными и будут иметь свой собственный фон. Я пытался использовать tkinter.Canvas , но это не работает с ярлыками. Есть какие-нибудь предложения?

Это код для первой версии приложения:

 from tkinter import *
from time import sleep
from random import choice
import datetime

root=Tk()
BGCOLOR='#000000'
FGCOLOR='#FFFFFF'
root.overrideredirect(True)
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
root.geometry(str(w) 'x' str(h) ' 0 0')
root.configure(bg=BGCOLOR)

date=str(datetime.datetime.now()).split()[0].split('-')
tl=Label(root,text=str(datetime.datetime.now()).split()[1].split('.')[0],font=['URW Gothic L',300], fg=FGCOLOR, bg=BGCOLOR)
dl=Label(root,text=date[2] '.' date[1] '.' date[0],font=['URW Gothic L',100],bg=BGCOLOR,fg=FGCOLOR)

tl.pack(expand=True, fill=BOTH)
dl.pack(expand=True,fill=BOTH)

Button(master=root,text='X',bg=BGCOLOR,fg=FGCOLOR,command=root.destroy).pack(side=RIGHT)

while True:
    tl.config(text=str(datetime.datetime.now()).split()[1].split('.')[0])
    if date!=str(datetime.datetime.now()).split()[0].split('-'):
        date=str(datetime.datetime.now()).split()[0].split('-')
        dl.config(text=date[2] '.' date[1] '.' date[0])
        dl.update()
    tl.update()
    sleep(1)
 

Комментарии:

1. нет, не работает. Я смотрел в tk.Tk().config() (без аргументов он выводит фактическую конфигурацию), и там нет параметра под названием «изображение»

2. Проверить geeksforgeeks.org/how-to-use-images-as-backgrounds-in-tkinter

3. сделал я. но это не работает для классов меток

4. Ну что ж, я нашел его. Но… Я не могу выбрать цвет переднего плана, не так ли?

Ответ №1:

Итак, само решение состоит в том, чтобы создать объект Canvas и использовать функцию create_text() с аргументами «заливка» и «шрифт». Самое лучшее в этом то, что вы можете изменить положение текста