Notebook - Reiter

Fragen zu Tkinter.
Antworten
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Hallo liebe Community!

Ich bin neu bei Python und noch neuer in diesem Forum. Das ist jetzt mein erster Post hier in der Hoffnung Lösungen und Anregungen für meine Probleme zu finden.
Ich bin seit einiger Zeit dabei mein erste Programm aufzubauen und bin gerade dabei meiner Oberfläche via Notebook auf Reiter zu verteilen.

Dabei ist mir folgende Kuriosität aufgefallen:

Bei der Erstellung eines leeren Reiters hat der Reiter die standartmäßige graue Hintergrundfarbe. Sobald man ein Widget hinzufügt änder sich die Farbe auf weiß.

https://ibb.co/QmZ55kp

Das Problem ist, dass die Labelframes oder Frames die ich einfüge weiterhin den grauen Hintergrund haben.

Warum die Farbe wechselt weiß ich nicht. Welcher Befehl das ändern könnte weiß ich ebenfalls nicht. Ich habe schon alle möglichen Befehle zur Änderung des ttk Styles ausprobiert, aber das einzige was Abhilfe schafft ist, die Hintergründe aller Widgets auf "weiß" zu ändern.

Weiß jemand eventuell woran es liegen kann, dass isch die Farbe ändert und wie man das beheben kann?
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bibo3000: Was machst Du denn da genau? Warum sind die Fenster beispielsweise so gross? Das sollten sie nicht sein wenn da (so gut wie) nix drin ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

@ blackjack: Das ist ein Beispiel um das Problem aufzuzeigen. xD
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bibo3000: Was ist ein Beispiel? Das was Du uns nicht zeigst? Ich würde ja gerne mal das Beispiel sehen. Also den Code, denn an den Bildern kann man ja nicht sehen was Du da machst, sondern nur was bei Dir das Ergebnis ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Mit dem Bild und dem Programm wollte ich zeigen, wie sich die Reiter verändern mit und ohne Widget.
Nachfolgend der Code:

root = tk.Tk()
root.geometry("600x600")

notebook = ttk.Notebook(root)
notebook.pack()

frame1 = ttk.Frame(notebook, width=550, height=550)
frame1.pack()
frame2 = ttk.Frame(notebook, width=550, height=550)
frame2.pack()

button = tk.Button(frame1, text="Button")
button.pack()

notebook.add(frame1, text="Test 1", sticky="NW")
notebook.add(frame2, text="Test 2", sticky="NW")

root.mainloop()
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich kann das Problem bei mir nicht nachvollziehen. Hier sind beide Inhalte von den Reitern in gleichen, erwartbaren Farbe.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Das heißt, dass beide Reiter bei dir grau geblieben sind und der mit dem Button nicht weiß geworden ist, so wie im Bild?
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Genau.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Puh, das macht die Sache irgendwie nur noch kniffliger. Irgendwelche Ideen?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Klassiker: das Programm nicht selbst starten, sondern aus einer IDE (am schlimmsten IDLE) heraus, die selbst eine GUI benutzt, und dadurch damit interferiert.
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Wenn ich über die Kommandozeile starte sieht es genauso aus. Oder hab ich was falsch verstanden?

Edit: Ich habe es mit Visual Studio Code, dem Python IDLE und dem Start aus der Kommandozeile heraus probiert. Das Ergebnis ist immer das Gleiche.

Edit 2: Jetzt habe ich sogar mal "schnell" ne .exe (mit pyinstaller) drauß gemacht und sieht wieder genauso aus.
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Wenn ich das ttk.Frame gegen ein ttk.Labelframe ersetze und mit pack_propagate auf die gewünschte Größe zwinge, ist das Weiß weg. Scheinbar liegt es am Frame.
Bibo3000
User
Beiträge: 30
Registriert: Mittwoch 5. Oktober 2022, 14:01

Okay okay, Asche über mein Haupt. Ich hab den Fehler gefunden.
Was bei mir weiß angezeigt wurde war nicht das Frame sondern "leerer" Raum. Besser kann ich es nicht beschreiben.

Wenn ich das Frame mit pack_propagate auf die Größe zwinge die iben im Code stehen, ist wieder alles grau. Vorher war das Frame so groß wie der Button und damit nicht sichtbar. Schön blöd... Naja... ^^
Antworten