Я не могу понять, как поместить кнопки поверх моей фоновой картинки, я перепробовал много форумов, но ни один из ответов не сработал - PullRequest
0 голосов
/ 24 февраля 2019

Итак, я создаю «HUB» для своей игры, и у меня там есть фон, но я не могу отобразить кнопки поверх фона.Я искал на многих форумах, и ни один из ответов не работал для моего сценария.Не уверен, что мне нужно делать.Сценарий действительно прост, так как он должен быть HUB.

РЕДАКТИРОВАТЬ: Итак, я сделал несколько изменений, и теперь у меня есть и кнопки, и картинка, но я не могу разместить обе кнопки на картинке.Это как картинка сама по себе является строкой.

Вот сценарий:

from tkinter import *

root = Tk()
root.geometry("1280x640")
root.title("Choose level")
topFrame = Frame(root, width=1280, height=640)
topFrame.grid(row=0)

background = PhotoImage(file="HUB_BG.png")
background1 = Label(root, image=background)
background1.grid(row=0)

level1 = Button(topFrame, text="Level 1")
level1.grid(row=0)
level2 = Button(topFrame, text="Work in progress")
level2.grid(row=1)
#level3
#level4
#level5
#level6
#level7
#level8
#level9
#level10

root.mainloop()

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Самое простое решение для использования фонового изображения - использовать place, чтобы добавить изображение в качестве фона.place не изменит ничего относительно размера родительского элемента или компоновки любых других виджетов в родительском элементе, и другие виджеты могут быть добавлены сверху с помощью grid или pack, как вы обычно это делаете.

Обратите внимание, что важно создать виджет изображения перед созданием других виджетов, чтобы он был ниже в порядке наложения.Кроме того, вы можете вызвать метод lower() в виджете, чтобы переместить его в конец порядка наложения.

Пример:

background1.place(relx=.5, rely=.5, anchor="c")
0 голосов
/ 24 февраля 2019

Я адаптировал ваш код, чтобы он работал на моей стороне ... в результате всего несколько настроек приведут к тому, что вы хотели: -)

Возможно, вы захотите документировать в columnconfigure и rowconfigure, а такжеЛипкий параметр метода сетки.

from tkinter import *    
root = Tk()
root.geometry("1280x640")
root.title("Choose level")

# Let's assume we are not using your frame.
#topFrame = Frame(root, width=1280, height=640)
#topFrame.grid(row=0)

background = PhotoImage(file="HUB_BG.png")
background1 = Label(root, image=background)

# adding a column to use columnconfigure and rowconfigure...
# using sticky so the image stays expanded in your widget
background1.grid(column=0, row=0, sticky='nsew')
# Below will stick your background label so it doesn't resize with your widgets
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

# replaced topframe with background1.
level1 = Button(background1, text="Level 1")
level1.grid(row=0)
level2 = Button(background1, text="Work in progress")
level2.grid(row=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...