После одного дня работы я смог создать меню конфигурации в Tkinter, которое в настоящее время выглядит следующим образом: ![enter image description here](https://i.stack.imgur.com/8yK0m.png)
Поскольку я смог выполнить все мои варианты, я хотел очистить визуальные эффекты, наложив все эти параметры на фоновый узор. Я сделал макет здесь: ![enter image description here](https://i.stack.imgur.com/gKhs8.png)
Однако всякий раз, когда я вставлял изображение, я всегда получал экран, который заполнен только фоновым рисунком, но без какого-либо текста или другого виджеты накладываются на него. Я подозревал, что проблема заключалась в том, что все виджеты были размещены сразу после шаблона. Было решение использовать параметр «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()