Wenn Sie einen Hintergrund in mehreren Registerkarten mithilfe von TKinter -Notizbuch einfügen, funktioniert dies nicht Python

Python-Programme
Anonymous
 Wenn Sie einen Hintergrund in mehreren Registerkarten mithilfe von TKinter -Notizbuch einfügen, funktioniert dies nicht

Post by Anonymous »

Ich versuche derzeit, einen kleinen Texteditor zu entwickeln, und um es nützlicher zu machen, setze ich Registerkarten ein, damit Sie mehrere Dateien gleichzeitig öffnen können (z. B. VSCODE z. B. VSCODE). Ich benutze Python 3.13.1 und Tkinter. Ich habe eine Klasse namens Window erstellt. Die Struktur meines Codes lautet:

[*] Die Struktur, die meine Registerkarten enthält

Code: Select all

Text
), und jede Registerkarte wird in self.tabsframe = []
Die Textredakteure werden auch in self gespeichert. Diese Methode wird gleich nach dem Aufruf der Fenster in meiner Hauptdatei aufgerufen.

Code: Select all

def apply_preferences(self):
"""
Applies the preferences chosen by the user.

Returns None.

"""
// There's actually more code but it doesn't matter here

self.preferences = j.extract_data("preferences.json")    # We reload the preferences
font = tkFont.Font(family=self.preferences["general"]["font"],
size=self.preferences["general"]["font_size"])
// ...

self.backgrounds=[]

for i in range(len(self.tabsFrame)):
if hasattr(self, 'background_label'):
self.background_label.destroy()  # We remove the previous background

image = Image.open("img/bg_"+self.preferences["theme"]+".png")
background_image = ImageTk.PhotoImage(image.resize((self.window_width, self.window_height)))

self.background_label = tk.Label(self.tabsFrame[i], image=background_image)
# self.background_label.place(x=0, y=0, width=self.window_width, height=self.window_height)
self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
self.background_label.lower()  # Ensures the background is behind everything
self.backgrounds.append(background_image)  # We keep a reference to avoid garbage collection

if self.preferences["theme"] == "dark":
self.textEditors[i].config(bg='#2e2e2e', fg='white', insertbackground='white')
else:
self.textEditors[i].config(bg='white', fg='black', insertbackground='black')

def recursive__font_change(parent): # We change the font of all widgets in the app
// ...

recursive__font_change(self.root)
< /code>
Die Backboorns jeder Registerkarte sollte ein Bild sein, aber in jeder Registerkarte außer der letzten ist es nur einen weißen Hintergrund. Die Methode create_tab 
ruft self.apply_preferences () , daher weiß ich nicht, was schief gelaufen ist. Ich habe keine Fehlermeldungen, wenn ich meinen Code ausführe, und ich versuchte zu schauen, wenn jemand das gleiche Problem wie ich hatte, aber ich konnte keine Antwort finden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post