ttk.Combobox - Änderung Style

Fragen zu Tkinter.
Antworten
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,

mein Betriebssystem ist Kubuntu 14.04.
Beim Versuch ein dunkles Farbschema zu verwenden, habe ich das Problem dass meine ttk.Combobox weiße Schrift auf weißen Hintergrund anzeigt.

Beim Googeln, ob man background und foreground in der ttk.Combobox ändern kann, konnte ich nichts aussagekräftiges finden.
Folgende Codes (mit #*# gekennzeichnet) habe ich eingebaut, leider ohne Erfolg auf Änderung von background und foreground:

Code: Alles auswählen

        # ComboBoxFeld
        self.cb_frame = tk.Label(self.window)
        self.cb_frame.pack(expand=True, anchor=tk.CENTER)
        # create the self.combo box
        s = ttk.Style() #*#
        print(s.element_options('TCombobox')) #*#
        print(s.lookup('TCombobox.foreground', 'foreground')) #*#
        s.configure('TCombobox', bg='red', fg='green') #*#
        print(s.lookup('TCombobox.foreground', 'foreground')) #*#
        print(s.configure('TCombobox')) #*#
        self.combo = ttk.Combobox(self.cb_frame, width=max_width, style='TCombobox') #*#
        self.combo.bind('<<ComboboxSelected>>', self.control)
        self.combo.bind('<KeyRelease>', self.control)
        self.combo.bind('<Button-1>', self.control)
        # load the self.combo box with the list
        self.key2combo = dict()
        self.combobox_list = [self.i2name[key]
            for key in sorted(self.i2name)]
        self.combo['values'] = self.combobox_list
        # pack the widgets vertically in this order
        self.combo.pack(expand=True, anchor=tk.CENTER)
        self.combo.focus_set()
Die Printausgaben geben folgendes aus:

Code: Alles auswählen

()
#000000
#000000
{'padding': 1, 'fg': 'green', 'arrowsize': '12', 'bg': 'red'
Was mache ich falsch, wie müsste es richtig sein?

Grüße Nobuddy
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Bin einen Schritt weiter.
Bei ttk.Style(), muss background und foreground ausgeschrieben werden, also nicht die Abkürzung bg und fg.

Code: Alles auswählen

        s = ttk.Style()
        s.configure('TCombobox', background=self.bg, foreground=self.fc)
        self.combo = ttk.Combobox(self.cb_frame, width=max_width,
            style='TCombobox')
background beeinflusst jetzt den Pfeilbutton zum Öffnen der Combobox, aber nicht den Hintergrund des Ein-/Ausgabefenster bzw. den Auswahlhintergrund in der Combobox.
foreground beeinflusst die Schriftfarbe im Ein-/Ausgabefenster, aber nicht die Schriftfarbe der Auswahl in der Combobox.

Wie kann ich erreichen, dass das Ein-/Ausgabefenster bzw. der Auswahlhintergrund der Combobox, mit den Werten aus background und foreground beeinflusst werden?

Grüße Nobuddy
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Vielleicht ist die Überschrift etwas missverständlich, was das eigentliche Problem angeht.

Beim Versuch ein dunkles Farbschema in meinem Betriebssystem (Kubuntu 10.04) zu verwenden, habe ich das Problem dass meine ttk.Combobox weiße Schrift auf weißen Hintergrund anzeigt. Dies ist bei der Ausgabe wie auch bei der Auswahl der Combobox der Fall.

Daher habe ich versucht, durch Farb-Änderung im background und foreground das Problem zu lösen. So wie es aussieht ist dies aber nicht möglich.

Ich hoffe, dass mir Jemand von Euch eine Alternative zu diesem Problem aufzeigen kann, bzw. eine Lösung für Farb-Änderung in background und foreground der ttk.Combobox.

Grüße Nobuddy
Antworten