我创建了一个python GUI应用程序。它的效果很好,除了ComboBox之外,我还根据自己的喜好设计了一切。在ttk.Combobox上的样式似乎不起作用。
这应该让我知道我想要的材料风格。这是我对组合框的样式块。
globalStyle = ttk.Style()
globalStyle.configure('TCombobox', foreground=textColor, background=backgroundColor, fieldbackground=selectColor, fieldforeground=textColor, font='Verdana')
我唯一能够成功改变的是文本和前景色。我希望编辑以下属性:
文字颜色 领域背景 下拉文字颜色 下拉背景
编辑:我应该提到使用的颜色变量都是有效的十六进制颜色代码。
selectColor = '#333333'
backgroundColor = '#444444'
foregroundColor = '#555555'
textColor = '#999999'
答案 0 :(得分:0)
因此,我遇到了同样的问题,但是找到了大多数解决方案here。您所要做的就是在代码中添加以下内容:
option add *TCombobox*Listbox.background color
option add *TCombobox*Listbox.font font
option add *TCombobox*Listbox.foreground color
option add *TCombobox*Listbox.selectBackground color
option add *TCombobox*Listbox.selectForeground color
然后更改框内的字体(当下拉菜单不存在时)将font='font_style'
添加到代码中。
所以我的情况是:
class CreateProfile(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent, bg='dodgerblue4')
label = tk.Label(self, text="Create Profile", font=large_font, bg='dodgerblue4', fg='deepskyblue')
label.grid(columnspan=10, row=0, column=0, pady=5, padx=5)
self.grid_rowconfigure(1, weight=1)
self.grid_columnconfigure(1, weight=1)
self.option_add("*TCombobox*Listbox*Background", "dodgerblue")
self.option_add("*TCombobox*Listbox*Font", "pirulen")
self.list_c = ttk.Combobox(self, values=("1", "2", "3", "4"), font='pirulen')
self.list_c.grid(row=1, column=1, pady=5, padx=5)
确保您还具有以下导入内容:
import tkinter as tk
import tkinter.ttk as ttk
我的问题是,我只能更改实际框的背景颜色(不存在下拉菜单时)。我仍在尝试找出如何更改字体颜色(前景对我不起作用)以及框本身的颜色。因此,如果有人可以补充这个答案,那就太好了!
答案 1 :(得分:-1)
我知道这个问题已经过了半年,但我遇到了类似的问题,并设法解决了这个问题。要更改ttk Combobox弹出框架的颜色,您可以使用以下代码:
# these imports are indeed only valid for python 3.x
import tkinter as tk
import tkinter.ttk as ttk
# for python 2.x the following import statements should work:
# import Tkinter as tk
# import ttk
root = tk.Tk()
# adding the options to the root elements
# (all comboboxes will receive this options)
root.option_add("*background", "#444444"),
root.option_add("*foreground", "#999999"),
# create a combobox
ttk.Combobox(root, values=["Banana", "Coconut", "Strawberry"]).pack()
root.mainloop()
我不确定我是否正确理解了tk的样式机制。 至少上面的代码适用于Python 3.2和Python 3.4