Anonymous
Фоновое изображение для моей пользовательской программы tkinter не появится.
Сообщение
Anonymous » 26 ноя 2024, 01:18
Я пытаюсь добавить фон в свою собственную программу tkinter. У него есть основной класс, к которому добавляются все мои фреймы. В этом же классе есть функции для их появления. Проблема в том, что вместо отображения моего фонового изображения он просто показывает серый прямоугольник, поверх которого затем размещаются все кадры. Вот мой код:
Код: Выделить всё
import customtkinter as ctk
from PIL import Image # Required for handling images
from frames import
ctk.set_appearance_mode('dark')
ctk.set_default_color_theme('dark-blue')
class FrameManager(ctk.CTk):
def __init__(self, debug_mode=False):
super().__init__()
self.title('Equipment Manager')
self.geometry('1000x580')
# Add background image
self.background_image = ctk.CTkImage(Image.open("EquipmentManager\\background.png"), size=(1000, 580))
self.background_label = ctk.CTkLabel(self, image=self.background_image, text="")
self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
self.background_label.lower()
# Configure layout grid
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
# Create a dictionary for frames
self.frames = {}
# Add all the frames
self.add_frame(LoginFrame, 'Login')
self.add_frame(SignUpFrame, 'Sign Up')
self.add_frame(LoadingFrame, 'Loading')
self.add_frame(DatabaseFrame, 'Database')
self.add_frame(ViewContactData, 'CData')
self.add_frame(ViewEquipmentData, 'EData')
self.add_frame(AddContact, 'AddC')
self.add_frame(AddEquipment, 'AddE')
# Debug mode
self.debug_mode = debug_mode
if self.debug_mode:
self.frame_selector = ctk.CTkOptionMenu(
self,
values=list(self.frames.keys()),
command=self.show_frame,
)
self.frame_selector.grid(row=0, column=1, padx=10, pady=10, sticky='e')
# Show the first frame
self.show_frame('Login')
def add_frame(self, page_class, name):
# Add frames and set transparency
frame = page_class(self)
frame.configure(fg_color="transparent") # Ensure frames allow background to show
self.frames[name] = frame
frame.grid(row=0, column=0, sticky='nsew')
def show_frame(self, name):
# Raise the selected frame to the top
self.frames[name].tkraise()
def login_succesful(self):
self.show_frame('Loading')
self.frames['Loading'].animate_loading()
if __name__ == '__main__':
app = FrameManager(debug_mode=True)
app.mainloop()
На изображении показано, где появляется мое меню отладки, но не показано, где появляются рамки.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... not-appear
1732573100
Anonymous
Я пытаюсь добавить фон в свою собственную программу tkinter. У него есть основной класс, к которому добавляются все мои фреймы. В этом же классе есть функции для их появления. Проблема в том, что вместо отображения моего фонового изображения он просто показывает серый прямоугольник, поверх которого затем размещаются все кадры. Вот мой код: [code]import customtkinter as ctk from PIL import Image # Required for handling images from frames import ctk.set_appearance_mode('dark') ctk.set_default_color_theme('dark-blue') class FrameManager(ctk.CTk): def __init__(self, debug_mode=False): super().__init__() self.title('Equipment Manager') self.geometry('1000x580') # Add background image self.background_image = ctk.CTkImage(Image.open("EquipmentManager\\background.png"), size=(1000, 580)) self.background_label = ctk.CTkLabel(self, image=self.background_image, text="") self.background_label.place(x=0, y=0, relwidth=1, relheight=1) self.background_label.lower() # Configure layout grid self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(0, weight=1) # Create a dictionary for frames self.frames = {} # Add all the frames self.add_frame(LoginFrame, 'Login') self.add_frame(SignUpFrame, 'Sign Up') self.add_frame(LoadingFrame, 'Loading') self.add_frame(DatabaseFrame, 'Database') self.add_frame(ViewContactData, 'CData') self.add_frame(ViewEquipmentData, 'EData') self.add_frame(AddContact, 'AddC') self.add_frame(AddEquipment, 'AddE') # Debug mode self.debug_mode = debug_mode if self.debug_mode: self.frame_selector = ctk.CTkOptionMenu( self, values=list(self.frames.keys()), command=self.show_frame, ) self.frame_selector.grid(row=0, column=1, padx=10, pady=10, sticky='e') # Show the first frame self.show_frame('Login') def add_frame(self, page_class, name): # Add frames and set transparency frame = page_class(self) frame.configure(fg_color="transparent") # Ensure frames allow background to show self.frames[name] = frame frame.grid(row=0, column=0, sticky='nsew') def show_frame(self, name): # Raise the selected frame to the top self.frames[name].tkraise() def login_succesful(self): self.show_frame('Loading') self.frames['Loading'].animate_loading() if __name__ == '__main__': app = FrameManager(debug_mode=True) app.mainloop() [/code] На изображении показано, где появляется мое меню отладки, но не показано, где появляются рамки. Подробнее здесь: [url]https://stackoverflow.com/questions/79224745/the-background-image-for-my-custom-tkinter-program-will-not-appear[/url]