Oops, I hit "reply" instead of "reply-list" last time. Trying again...
On 06/03/2018 02:01 PM, Christian Gollwitzer wrote:
Am 03.06.18 um 21:54 schrieb Jim Lee:> import tkinter as tk
from tkinter import ttk
root = tk.Tk()
cb = ttk.Combobox(root)
cb.grid(row=0, column=0, sticky='NSEW')
cb['values'] = ['one', 'two', 'three', 'four']
root.mainloop()
The text of the values in the combobox dropdown list is white on
white. The *selected* item in the list is white on light grey, but
all the unselected items are invisible (white on white).
Which platform are you on, i.e. which operating system? I guess it is
Linux. In that case the default colors are read by Tk from the X11
options database, which is some cruft from the past to set options for
X11 applications. Try to run
xrdb -query
That should give you a list of default values, and maybe you can see
something. The dropdown list is actually a popdown menu, so look for
Menu colors. For instance, if you use a dark theme in your desktop
environment, it could be that the foreground is correctly set to
white, but the background is hardcoded white for some reason e.g.
Christian
Thanks. Yes, I am on Linux (Fedora 28, MATE desktop). Yes, I am using
a dark theme - however, xrdb does not show #ffffff for *any* background
color, so I have no idea where ttk is picking it up from. Even if I
change to a light desktop theme, the ttk widget still displays white on
white. The only solution I have found so far is rather hackish, but it
works:
class MyCombobox(ttk.Combobox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.bind('<Map>', self._change_popdown_color)
def _change_popdown_color(self, *args):
popdown = self.tk.eval('ttk::combobox::PopdownWindow
{}'.format(self))
self.tk.call('{}.f.l'.format(popdown), 'configure',
'-foreground', 'black')
However, I am still looking for a more elegant solution that preferably
doesn't hardcode colors...
-Jim
--
https://mail.python.org/mailman/listinfo/python-list