面对改变Tkinter组合框突出背景颜色的问题

时间:2017-03-20 21:09:23

标签: python tkinter

请您看看这个演示,让我知道为什么我无法将高光背景从蓝色更改为白色?

如您所见,我已经设置了

  

' highlightbackground':'黄色'

combostyle = ttk.Style()

combostyle.theme_create('combostyle', parent = 'alt',
    settings = {
        'TCombobox': {
            'configure': {
                'fieldbackground': 'white',
                'selectbackground': 'white',
                'selectforeground': 'black',
                'highlightbackground': 'Yellow'
            }
        }
    }
)

combostyle.theme_use('combostyle')

1 个答案:

答案 0 :(得分:1)

  

请您看看这个演示,让我知道为什么我无法将高光背景从蓝色更改为白色?

首先,当您发布代码 - make sure that someone can actually run it以重现您的问题时!

如果您询问有关组合框字段突出显示的信息,请选择以下行:

'selectbackground': 'white',
'selectforeground': 'black'

目前还不清楚,当你提到'highlightbackground': 'Yellow'时,为什么你不能能够将高亮背景从蓝色变为白色?当你应用这种风格时,也许你做错了什么?

您使用highlightbackground的原因是什么?据我所知,没有这样的选项(如果有,请更正我),因此如果您需要在组合框字段中将突出显示颜色更改为yellow,请将selectbackground行更改为{{ 1}}。

如果你想改变列表框中的高亮颜色 - 这件事有点棘手。根据tcl文档there,你不能直接做这样的事情!

  

组合框小部件利用pre-ttk Listbox作为其下拉元素,因此当前需要'option'命令来设置列表框选项。

     

'-selectbackground'和'-selectforeground'(适用于'selected'文本)可以与configure命令一起使用,在使用相关列表框的options数据库时,我们必须使用'selectBackground的相应数据库名称'和'selectForeground'分别注意,数据库名称似乎区分大小写(有关完整列表,请参阅http://www.tcl.tk/man/tcl8.6/TkCmd/options.html)。

     

通过鼠标指针选择时,相关列表框的上述'selectForeground'和'selectBackground'选项用于实现标准的'悬停'效果。

所以可以这样解决:

'selectbackground': 'yellow'

完整示例:

root.option_add('*TCombobox*Listbox.selectBackground', 'yellow') # change highlight color
root.option_add('*TCombobox*Listbox.selectForeground', 'black') # change text color