Ändern der Darstellung einer Bildlaufleiste in tkinter (mit ttk-Stilen)

8

Ich habe mich gefragt, ob Sie mir bei einem Problem mit den Stiloptionen in ttk helfen könnten. Ich habe es geschafft, die meisten grundlegenden ttk-Widgets in den Stil meiner Vorliebe zu ändern. Ich bin nur daran fest, den Stil einer Bildlaufleiste zu ändern. Ich habe stundenlang nach einer Antwort gesucht, leider ohne Erfolg.

Hier ist ein Beispielcode, der die Bildlaufleisten-Option verwendet:

%Vor%

Ich habe auch verschiedene Kombinationen ausprobiert, einschließlich;

%Vor%

Vielen Dank für Ihre Hilfe!

    
StephanL 06.02.2015, 22:04
quelle

3 Antworten

5

Es sieht so aus, als ob Sie nur den Trog für eine horizontale Bildlaufleiste unter dem Windows-Thema ändern möchten. Die ttk-Widgets werden aus einer Reihe von Elementen erstellt, die von einer Styling-Engine zur Verfügung gestellt und mit dem deklarierten Layout kombiniert werden. Unter Windows ist die Styling Engine die Windows Visual Styles API, was bedeutet, dass der Programmierer keine Kontrolle über die Farben oder Bilder hat, die zum Zeichnen der meisten gebräuchlichen Elemente verwendet werden. Der Tastenhintergrund, die Bildlaufleiste und die Schaltflächen und der Daumen und sogar der Griff, der im Bildlaufleisten-Daumen gezeichnet wird, werden alle von Windows bereitgestellt.

Es ist möglich, die Kontrolle über die Anpassung der Anwendung zu übernehmen, aber zu einem Preis, der dafür sorgt, dass Ihre Anwendung auf der gegebenen Plattform nicht mehr als Standard betrachtet wird. Dazu müssen Sie eigene UI-Elemente bereitstellen und neue Widget-Layouts definieren. Letztendlich kann dies zur Definition eines eigenen Themas führen. Die tcl-Skripte in der ttk-Bibliothek bieten gute Beispiele und es gibt sogar einige komplette (wenn alt) Themen, die Bitmaps verwenden, um bildbasierte Designelemente in der ursprünglichen Version von ttk zu deklarieren, die "tile" genannt wurde.

In diesem speziellen Beispiel, um eine horizontale Bildlaufleiste von Windows mit einem benutzerdefinierten farbigen Hintergrund zu erhalten, müssen wir das Layout neu definieren, um den Rollbalken-Einzug von den Tk-gezeichneten Elementen zu verwenden. Die im Standard-Design verwendeten Elemente können kopiert und mithilfe von Style-Konfigurationsparametern definiert werden. Sie werden dann von Tk selbst gezeichnet und nicht an eine Engine eines Drittanbieters übergeben. Der folgende Code erzeugt eine Bildlaufleiste wie diese, die die Standardtasten und den Daumen der vsapi-Stying-Engine verwendet, aber die Tube ersetzt. Dieser importierte Trog versteht die Konfigurationsoption troughcolor style und so können wir jetzt eine Farbe definieren. Alle Bildlaufleisten, die diesen Stil verwenden, verwenden die gleiche Farbe, da das Widget selbst keine Option für die Option trumcolor akzeptiert. Dh: Sie können nicht eine Bildlaufleiste blau und eine andere rot sein, es sei denn, Sie definieren für jede neue Farbe einen neuen Stil.

%Vor%     
patthoyts 11.04.2015 22:05
quelle
0

Dies scheint im tkinter unter Windows nicht möglich zu sein. Die folgende Antwort sagt so: ScrollledText Bildlaufleistenfarbe (Python Tkinter)

Scrollbar-Dokumentation: Ссылка Unterstützte Stilfelder: Ссылка

Ich habe versucht, sowohl "Hintergrund" als auch "troughcolor" erfolglos auf meinem Windows-Rechner zu übergeben. Ich habe auch versucht, den Stil auf die allgemeine Bildlaufleiste anzuwenden: style.configure ('TScrollbar', Hintergrund="blau") Keine meiner Lösungen hat funktioniert.

Auch ein anderer Forenbeitrag stimmt zu, dass Sie den Scrollbar-Hintergrund hier nicht stylen können: Ссылка

    
Justin 21.03.2015 21:22
quelle
0

Es ist einfacher, wenn Sie das Thema clam verwenden:

%Vor%     
Aivar 24.10.2017 18:33
quelle

Tags und Links