Как мне наложить эти кнопки поверх изображения для фона в Python Tkinter - PullRequest
1 голос
/ 09 июля 2019

В настоящее время я пытаюсь создать простое главное меню для игры, используя Tkinter в качестве простого графического интерфейса, поскольку это простая RPG-игра и Python, однако изображение при любых обстоятельствах перекрывает кнопки.

Я пытался использовать некоторые другие решения, такие как размещение их или создание окна, но я также не могу найти прямой ответ, как это сделать.

import tkinter
from tkinter import *
from PIL import ImageTk, Image 
(PIL is from when I was using a JPG before.)   

root = Tk()
content = ttk.Frame(root)
root.geometry("600x600")

background = ImageTk.PhotoImage(Image.open("bred.png"))
canvas = tkinter.Canvas(root, width=580, height=600)

content.grid(column=0, row=0)

Btn1 = Button(content, text="Play", width=5, height=1)
Btn2 = Button(content, text="Kill me", width=7, height=1, command = 
root.quit)

backgroundlabel = tkinter.Label(root, image=background)
backgroundlabel.image = background

backgroundlabel.place(x=0, y=0, relwidth=1, relheight=1)

Btn1.grid(row=1, column=2, padx=(130))
Btn1.columnconfigure(1, weight=1)
Btn1.rowconfigure(1, weight=1)

Btn2.grid(row=1, column=3, pady=(130))
Btn2.columnconfigure(3, weight=1)
Btn2.rowconfigure(1, weight=1)

root.mainloop()

1 Ответ

0 голосов
/ 11 июля 2019

В настоящее время мастер фонового изображения установлен на root, а кнопки настроены на рамку.Первое, что вам нужно сделать, это установить оба одинаковых мастера, т. Е. Изменить фоновый мастер на content:

backgroundlabel = tk.Label(content, image=background)

Далее вам нужно разобраться с порядком наложения.Вы можете позвонить widget.lift(), чтобы поднять кнопки наверх:

Btn1.grid(row=1, column=2, padx=(130))
...
Btn1.lift()

Btn2.grid(row=1, column=3, pady=(130))
...
Btn2.lift()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...