python - 有没有不同的方法来改变组合框的列表框属性?
问题描述
我一直在寻找更好的解决方案。屁股我找不到任何关于这个的东西。我的问题是,我可以在没有组合框的情况下更改列表 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()
解决方案
您可以使用以下函数来配置组合框的弹出列表框:
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")
推荐阅读
- python - 使用 python 调用函数给出未定义的错误
- python - 使用 NBA 统计数据在 Pandas 中创建三双列
- android - Android 在拖动时为 Fragment 设置动画并调整其大小
- php - 在上传文件的代码中找不到文件索引
- c# - 无法将 gameObject 数组的所有元素输出到统一控制台
- r - 如何在 R 中使用宏变量
- python - 有人可以举一个“operator.index()”的例子吗?
- php - Nginx 上的 Symfony4 和 WordPress 兼容性问题
- spring - 如何使用 Spring Boot Starter Data Cassandra 同时连接多个 cassandra 集群
- linux - nginx安装问题,不知道怎么解决