2016-12-13 2 views
0

Win7, Python 2.7, TkinterPython ändern listbox Farben in Echtzeit

ich auf einmal auf dem Bildschirm mehrere Listenfelder, und ich bin die Einrichtung einer Art und Weise den Benutzer zu lassen, die Farben ändern (Hintergrund, Textfarbe , Rahmenbreite, Rahmenfarbe, etc ...) Es gibt mehr als nur Listenfelder, es gibt Etikettenrahmen, Fortschrittsbalken, Fensterrahmen, um nur einige zu nennen.

Die Listbox (und andere Widgets) Etiketten werden in einer Datei Globals, thuis erklärt:

globs.lb1 = tk.Listbox(root, ... 

ich die Attribute leicht genug ändern, aber was ist die beste Methode, um alle Widgets zu aktualisieren?

Momentan stelle ich in meiner Settings.py-Datei manuell jedes Listenfeld (und andere Widgets) ein. Wenn ich jedoch später ein Widget hinzufüge, muss ich natürlich daran denken, die Datei Settings.py zu ändern.

Ich würde gerne ttk verwenden, ich denke ttk erlaubt mir, den Stil zu ändern, dann ttk wird sich erinnern, welche Widgets diesen Stil verwenden, aber es gibt keine Listbox in ttk.

Gäbe es ein Ereignis oder etwas in der Art I-Setup für jedes Listenfeld kann ...

Danke, Mark.

Antwort

2

Option 1: Definieren Sie eine Unterklasse von Listbox, die jedes von Ihnen erstellte Listenfeld registriert, sodass Sie beim Ändern der Einstellungen durch den Satz/die Liste der Listenfelder wechseln können.

Option 2: Verwenden Sie eine ttk.Combobox oder eine ttk.Treeview (nur Elemente der obersten Ebene und keine Erweiterung für Unterelemente). Ich denke, man könnte sich eine Baumansicht als eine überkomprimierte Listbox mit mehreren Spalten und möglichen hierarchischen Beziehungen vorstellen.

+0

Verdammt Terry, das war schnell. Ich denke, ich bekomme es, ich kann eine globale Liste mit den Listenfeldern (andere Widgets) Labels als Einträge in der Liste machen, dann tun Sie einfach ein for i in Bereich (len (global_list)): ... Ich mag es. Vielen Dank. –

+0

Noch besser: 'für Widget in registered_widgets: Repaint (Widget)'. Ich könnte schließlich dasselbe Problem mit IDLE haben. Benutzer können Editor-Text-Widgets anpassen (einschließlich der Shell), aber sonst nichts. Ich könnte Option 1 in Betracht ziehen, habe aber andere Prioritäten. Ich werde warten, bis Option 2 möglich ist. Wir fangen an, ttk-Widgets zu verwenden. Wenn die Konvertierung abgeschlossen ist und ich die Verwendung benutzerdefinierter Stile erkläre, kann eine Anpassung des Dialogs über Stile in Betracht gezogen werden –