Как вы можете иметь фоновое изображение с текстом сверху на кнопке на ТК? - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь сделать кнопки tk лучше, добавив фон кнопки.Проблема в том, что я могу использовать изображение или текст, но не оба, для кнопки tk.

Как вы можете использовать оба?

Вот что я пробовал:

from tkinter import *
from PIL import Image, ImageTk

print("I ran")

master = Tk()

canvas_width = 800
canvas_height = 400
window = Canvas(master, 
           width=canvas_width,
           height=canvas_height)

img = Image.open("images/button_black.png").resize((80,40))
ph_image = ImageTk.PhotoImage(img)

l = Label(master, text='Button', image=ph_image, compound=CENTER, fg="white")
l.pack(side=LEFT)

button = Button ( master, image=l)

window.pack()

mainloop()

1 Ответ

0 голосов
/ 30 сентября 2018

Чтобы использовать как изображение, так и текст, вы должны установить опцию compound.Из канонической документации :

Указывает, должен ли виджет отображать текст и растровые изображения / изображения одновременно, и если да, то где растровое изображение / изображение должно быть размещено относительнотекст.Должно быть одно из значений none , bottom , top , left , right или центр .Например, значение (по умолчанию) none указывает, что растровое изображение или изображение должно (если определено) отображаться вместо текста, значение left указывает, что растровое изображение или изображение должно бытьотображается слева от текста, а значение center указывает, что растровое изображение или изображение должно отображаться поверх текста.

Пример:

В следующем примере используется это изображение:

enter image description here

Программа выглядит так при использовании compound="center":

enter image description here

import tkinter as tk

image_data = '''
    R0lGODdhyABkAKIAAAAAAP8mAP/7AP///wAAAAAAAAAAAAAAACH5BAkAAAQALAA
    AAADIAGQAAAP/KLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987/
    /AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOl
    wTu+Lx+z+8H6jZ+goOEg4AnhYmKi3yHHIyQkZGOE5KWl5CUCpicnYx1nqGihHCj
    pqd+a6irrHlnrbCwY7G0sl+1uKxeubyoXL3AplnBxMJWxciex8nMmFXN0JJU0dS
    ZUtXYiVPZ3ILb3eB63+Hk4+Tg5ufc6erY0+3Zz/Du8vPQV/bRw/nFv/zAu/7lAi
    Ow1qyCq14hFKVqobM3Dj/RiUhKE0U8miIUzIihNh3HEPo+toglsqTJkyhTqlzJs
    qXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKlWZAAA7
'''

root = tk.Tk()
image = tk.PhotoImage(data=image_data)
label = tk.Button(root, image=image, text="Hello, world", compound="center")
label.pack(padx=20, pady=20)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...