我一直在寻找更好的解决方案。屁股我找不到任何关于此的信息。我的问题是,如果组合框没有 root.option_add("*TCombobox*Listbox*Background", "#1d2128")
,我可以更改列表框吗?所以它正在工作,但我希望在我创建的组合框附近进行更改,而不是在 root
:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("400x200")
# listbox in combobox attributtes
root.option_add("*TCombobox*Listbox*Background", "#1d2128")
root.option_add("*TCombobox*Listbox*Foreground", "#8b9ebf")
root.option_add("*TCombobox*Listbox*Font", "Courier")
# create a combobox
style = ttk.Style()
style.theme_use("default")
style.map('TCombobox', fieldbackground=[('readonly', "#1d2128")])
style.map('TCombobox', foreground=[('readonly', "#8b9ebf")])
style.map('TCombobox', selectbackground=[('readonly', "#1d2128")])
style.map('TCombobox', background=[('readonly', "#8b9ebf")])
comboBox_Options = ["Option 1", "Option 2", "Option 3", "Option 4"]
comboBox = ttk.Combobox(root, values=comboBox_Options, style="TCombobox", font="Consolas")
comboBox.set("Option 1")
comboBox["state"] = "readonly"
comboBox.pack()
mainloop()
答案 0 :(得分:1)
您可以使用以下函数来配置组合框的下拉列表框:
def config_combobox_popdown(cb, **kw):
# popdown listbox
popdown = cb.tk.eval("ttk::combobox::PopdownWindow %s" % cb)
args = []
for key, val in kw.items():
args.append("-"+key)
args.append(val)
cb.tk.call("%s.f.l" % popdown, "configure", *args)
...
comboBox_Options = ["Option 1", "Option 2", "Option 3", "Option 4"]
comboBox = ttk.Combobox(root, values=comboBox_Options, style="TCombobox", font="Consolas")
comboBox.set("Option 1")
comboBox["state"] = "readonly"
comboBox.pack()
config_combobox_popdown(comboBox, font="Courier", foreground="#8b9ebf", background="#1d2128")