image image


image

Worknote: Python GUI aufhübschen mit Custom Tkinter

Mit Tkinter, dem Standard-GUI-Toolkit für Python, verbindet die meisten Programmierer wohl eine Art Haßliebe. Geliebt wird es, weil das Toolkit (ein Interface zu Tcl/Tk) zur Python-Standard-Bibliothek gehört. Es ist daher bei den meisten Distributionen einfach da. Gehaßt wird es wegen seines in vielen Fällen doch recht altbackenen Erscheinungsbilds. Es gibt daher etliche Versuche, dem abzuhelfen. Mit Gui Zero, PySimpleGUI und DearPyGui hatte ich ja auch schon einige davon hier im Blog Kritzelheft vorgestellt.

Jetzt wurde mir in diesem Beitrag mit CustomTkinter eine weitere, freie (CC0) Tkinter-Erweiterung vorgestellt, die vor allem durch ihre Einfachheit besticht. Ich mußte sie natürlich sofort testen. Dafür habe ich erst einmal ein ganz normales, kleines Tkinter-Skript erstellt, das ich im weiteren Verlauf mit CustomTkinter-Features aufhübschen will:

from tkinter import *

# Fenster mit Titel erzeugen und die Größe festlegen
wn = Tk()
wn.title("Standard Tkinter-Fenster")
wn.geometry("300x400")

# Button erzeugen und anzeigen
mybutton = Button(wn, text = "Hallo Jörg! 🤓", font = ("Inter", 14))
mybutton.place(relx = .5, rely = .5, anchor = CENTER)

wn.mainloop()

Das ist noch nichts Besonderes (bis auf die Tatsache, daß Tkinter mittlerweile UTF-8 fest ist und Emojis beherrscht – ich glaube, ich muß mir die aktuelle Dokumentation mal vorknöpfen) und das Ergebnis könnt Ihr in diesem Screenshot bewundern:

image

Daraus eine CustomTkinter-Ansendung zu basteln, ist recht einfach. Zuerst einmal muß CustomTkinter installiert werden, aber da die Bibliothek auf PyPI zu finden ist, ist dieser Schritt mit

pip install customtkinter

schnell erledigt. Danach sind nur noch wenige Änderungen am Skript notwendig:

from tkinter import *
import customtkinter as ctk

# Fenster mit Titel erzeugen und die Größe festlegen
wn = ctk.CTk()
wn.title("Standard Ctk-Fenster")
wn.geometry("300x400")

# Button erzeugen und anzeigen
mybutton = ctk.CTkButton(wn, text = "Hallo Jörg! 🤓")
mybutton.place(relx = .5, rely = .5, anchor = CENTER)

wn.mainloop()

Um eine Verschmutzung des Namensraumes zu vermeiden und um customtkinter nicht jedesmal ausschreiben zu müssen, habe ich die Bibliothek mit dem Alias ctk importiert. Die einzige andere Änderung ist die, daß CTkButton keinen Parameter font benötigt, denn dieser wird von der Bibliothek intern festgelegt. Das Ergebnis sieht dann wie dieser Screenshot aus:

image

Das unterscheidet sich erst einmal nur in Kleinigkeiten von der »normalen« Tkinter-Anwendung, was vor allem daran liegt, daß meine Systemeinstellung ein light-Theme vorschreibt. Denn CustomTkinter kennt drei verschiedene Erscheinungsbilder (Themes):

  1. Standard (System, Default)
  2. Light-Mode: light
  3. Dark-Mode: dark

Diese kann man mit set_appearance_mode() explizit setzen. Füge ich daher in der dritten Code-Zeile meines Skripts

ctk.set_appearance_mode("dark")

hinzu, dann sieht das Ergebnis (Screenshot) schon ganz anders aus:

image

Doch wartet, da ist noch mehr: Wenn Ihr die Farbe des Buttons verändern wollt, könnt ihr zum Beispiel unter diese Zeile noch

ctk.set_default_color_theme("green")

hinzufügen und dann habt Ihr – wie im Bannerbild oben – ein grünes Knöpfchen. CustomTkinter kennt, wie ein Blick in die Dokumentation verrät, derzeit drei verschiedene Farbschemata: blue (Default), green und dark-blue. Wenn Euch dies nicht ausreicht, könnt Ihr von Eurer Distribution zum Beispiel die Datei dark-blue.json hochladen und unter einem neuen Namen als .json-Datei wieder abspeichern. In dieser Datei könnt Ihr dann nach Belieben herumsauen und Farbschemata Eurer Wahl erzeugen. Nur Euer Geschmack setzt Eurer Phantasie Grenzen.

Ich habe mit meinen Beispielen nur an der Oberfläche dessen gekratzt, was mit CustomTkinter möglich ist. Die Dokumentation und die Github-Seite des Projekts verraten Euch mehr. Und den Quellcode für meine Beispiele findet Ihr natürlich wie gewohnt in meinem GitHub-Repositorium.


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image