Python GUI Rand ändern?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Wichtig: Ich kenne CustomTkinter nicht - Vielleicht gibt es dort hilfreiche Dinge, die es im normalen Tkinter nicht gibt und die dir diesbezüglich helfen könnten. Meine Antwort bezieht sich auf das normale Tkinter - Das solltest du allerdings trotzdem genau so umsetzen können.

Dein Ansatz um die Titelleiste loszuwerden war definitiv richtig. Du musst nach dem Entfernen der Titelleiste 'nur' eine eigene Logik implementieren, um das Fenster zu bewegen. Dafür könntest du 2 Event Handler erstellen (für Linksklick <Button-1> und für die Bewegung der Maus im geklickten Zustand <B1-Motion>).

Beim Drücken der linken Maustaste speicherst du einfach die aktuelle Position der Maus und beim Bewegen der Maus bewegst du dann das Fenster entsprechend der aktuellen Distanz zum gespeicherten Startpunkt.

Die genaue implementierung davon kann ich dir auf die Schnelle leider nicht sagen, da müsstest du einfach mal googlen - Dort solltest du etliche Codebeispiele und hilfestellungen diesbezüglich finden.

Nun aber zum zweiten Problem. Wenn die Titelleiste entfernt ist, hast du ja immer noch den Hintergrund von dem Fenster, welchen du ja scheinbar auch entfernt haben möchtest, damit der Rand von deinem Bild auch der Rand vom Fenster ist.

Dieser Schritt ist leider von Betriebssystem zu Betriebssystem unterschiedlich. Wenn du nur für Windows planst, kannst du einfach folgendes einfügen:

root.wm_attributes("-transparentcolor", '#F0F0F0') 

(#F0F0F0 ist die Standard Hintergrundfarbe eines Fensters in Windows)

Da dieser Farbcode allerdings unter Umständen noch an anderen Stellen in deinem Programm auftreten könnte, solltest du dem Fenster eine Hintergrundfarbe geben, die definitiv eindeutig ist und somit ohne Probleme transparent gemacht werden kann.

Die Hintergrundfarbe änderst du wie folgt:

root.configure(background='#FARBCODE')
Woher ich das weiß:eigene Erfahrung