Как я могу наложить все меню поверх фонового рисунка в Tkinter? - PullRequest
0 голосов
/ 12 апреля 2020

После одного дня работы я смог создать меню конфигурации в Tkinter, которое в настоящее время выглядит следующим образом: enter image description here

Поскольку я смог выполнить все мои варианты, я хотел очистить визуальные эффекты, наложив все эти параметры на фоновый узор. Я сделал макет здесь: enter image description here

Однако всякий раз, когда я вставлял изображение, я всегда получал экран, который заполнен только фоновым рисунком, но без какого-либо текста или другого виджеты накладываются на него. Я подозревал, что проблема заключалась в том, что все виджеты были размещены сразу после шаблона. Было решение использовать параметр «component =» для отображения одной метки, но это показало только ... эту метку вместо всего меню.

Вот мой код меню:

import tkinter as tk
import tkinter.font as  tkFont
from tkinter import OptionMenu, Scale, HORIZONTAL, colorchooser, Button
from PIL import Image, ImageTk
window = tk.Tk()
window.title("FECD Setup")
window.geometry("320x540")
window.resizable(True, True)
ConfigFont = tkFont.Font(family="Ancient Modern Tales", size=15)

Config_Pat = ImageTk.PhotoImage(Image.open('Config pattern.png'))


# Settings Label
Settings_lbl = tk.Label(text="Settings", fg="white", font=ConfigFont)
Settings_lbl.pack(anchor=tk.W)

#Languages Label
Languages_lbl = tk.Label(text="Langauges", fg="white", width=15, height=1, font=ConfigFont)
Languages_lbl.pack(anchor=tk.W)

v = tk.IntVar()

#English Language Radiobutton
Eng_Lang_Rb = tk.Radiobutton(window, text="English", fg="white", padx=20, variable=v, value=1, font=ConfigFont)
Eng_Lang_Rb.pack(anchor=tk.W)

#Japanese Language Radiobutton
Jap_Lang_Rb = tk.Radiobutton(window, text="Japanese", fg="white", padx=80, variable=v, value=2, font=ConfigFont)
Jap_Lang_Rb.pack(anchor=tk.W)

#Turkish Language Radiobutton
Tur_Lang_Rb = tk.Radiobutton(window, text="Turkish", fg="white", padx=140, variable=v, value=3, font=ConfigFont)
Tur_Lang_Rb.pack(anchor=tk.W)

#Resolution Label
Resolutions_lbl = tk.Label(text="Resolutions", fg="white", width=15, height=1, font=ConfigFont)
Resolutions_lbl.pack(anchor=tk.W)

#Resolution Dropdown
Resolution = tk.IntVar()
Resolution.set((848, 480))
Resolutions_Drpdwn = OptionMenu(window, Resolution, (848, 480), (1280,720), (1920,1080), (2560,1440), (3840,2160))
Resolutions_Drpdwn.pack(anchor=tk.W)

#Volume Label
Volume_lbl = tk.Label(text="Volume", fg="white", width=15, height=1, font=ConfigFont)
Volume_lbl.pack(anchor=tk.W)

#Background Music Volume Label
BGMVolume_lbl = tk.Label(text="Background Music Volume", fg="white", width=25, height=1, font=ConfigFont)
BGMVolume_lbl.pack(anchor=tk.W)

#Background Music Volume Slider
BGMVol_Slider = Scale(window, from_=0, to=100, orient=HORIZONTAL, font=ConfigFont)
BGMVol_Slider.set(50)
BGMVol_Slider.pack(anchor=tk.W)

BGVolume = BGMVol_Slider.get()

#Sound Effects Volume Label
SFXVolume_lbl = tk.Label(text="Sound Effects Volume", fg="white", width=25, height=1, font=ConfigFont)
SFXVolume_lbl.pack(anchor=tk.W)

#Sound Effects Volume Slider
SFXVol_Slider = Scale(window, from_=0, to=100, orient=HORIZONTAL, font=ConfigFont)
SFXVol_Slider.set(50)
SFXVol_Slider.pack(anchor=tk.W)

Sound_Output = tk.IntVar()
Sound_Output.set(2)

#Mono Sound Radiobutton
Mono_Sound_Rb = tk.Radiobutton(window, text="Mono", fg="white", padx=20, variable=Sound_Output, value=1, font=ConfigFont)
Mono_Sound_Rb.pack(anchor=tk.W)

#Stereo Sound Radiobutton
Stereo_Sound_Rb = tk.Radiobutton(window, text="Stereo", fg="white", padx=20, variable=v, value=2, font=ConfigFont)
Stereo_Sound_Rb.pack(anchor=tk.W)

#Gameplay Settings Label
Gameplay_Settings_lbl = tk.Label(text="Gameplay Options", fg="white", width=15, height=1, font=ConfigFont)
Gameplay_Settings_lbl.pack(anchor=tk.W)

#Color Settings Label
Color_Settings_lbl = tk.Label(text="Menu Box Color", fg="white", width=20, height=1, font=ConfigFont)
Color_Settings_lbl.pack(anchor=tk.W)

#Color Chooser Button
def choose_color():
    clr = colorchooser.askcolor(title="Select Color")
    print(clr)
Color_Chooser_btn = Button(window, text="Choose Color", command=choose_color, borderwidth=5, relief=tk.GROOVE, font=ConfigFont)
Color_Chooser_btn.pack(anchor=tk.W)

#Battle Speed Label
Battle_Speed_lbl = tk.Label(text="Battle Speed", fg="white", width=20, height=1, font=ConfigFont)
Battle_Speed_lbl.pack(anchor=tk.W)

#Battle Speed Volume Slider
Battle_SPD_Slider = Scale(window, from_=0, to=200, orient=HORIZONTAL, font=ConfigFont)
Battle_SPD_Slider.set(100)
Battle_SPD_Slider.pack(anchor=tk.W)

BattleSpeed = Battle_SPD_Slider.get()

#Game Start Button
def Start_Game(Quit):
    Quit = False
Color_Chooser_btn = Button(window, text="Start Game", command=Start_Game, borderwidth=5, relief=tk.GROOVE, font=ConfigFont)
Color_Chooser_btn.pack(anchor=tk.W)


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