tkinter - Tkinter 如何更改组合框小部件箭头图像
问题描述
我正在尝试更改组合框小部件中的箭头图像。我知道您需要创建一个新元素并为其设置样式。我一直在寻找有关如何执行此操作的信息,但似乎在网上找不到任何东西。在下面的代码中,我创建了图像并将其显示在标签中,但我希望该图像作为组合框箭头图像。
from tkinter import *
from tkinter import ttk
root_window = Tk()
style = ttk.Style()
photo = """
R0lGODlhDQAQAPQAAFw1Zl42Z2A6amE6amI7a2I8a2I8bKeHqK6BqbSLsLWLsLuV
t7ufu7yfu72hvL6ivb6ivr+jvsKgvsWlwseow8iqxcmrxs+1zNC2zdO70dS90tW9
0tW+0wAAAAAAAAAAACH5BAEAAB0ALAAAAAANABAAAAVMYCd2QFmOKJltGZCOwMZt
7kvKtH3P9RvzutgmZ4tdiL6NBUkyGTaSjMHkEjgyGcuiwnIIRoWIJUG2eFPhCYJy
fhUkmLbNcPjqRL1RCAA7
"""
photo = PhotoImage(data=photo)
l = ttk.Label(root_window, image=photo).grid()
style.layout(
'Mystyle.TCombobox', [(
'Combobox.field', {
'sticky': NSEW,
'children': [(
'Combobox.downarrow', {
'side': 'right',
'sticky': NS
}
), (
'Combobox.padding', {
'expand': '1',
'sticky': NSEW,
'children': [(
'Combobox.textarea', {
'sticky': NSEW
}
)]
}
)]
}
)]
)
style.element_create('Mystyle.TCombobox.downarrow', 'image', photo)
cbo = ttk.Combobox(root_window, values=('one', 'two', 'three'), style='Mystyle.TCombobox')
cbo.grid()
root_window.mainloop()
解决方案
你非常接近,你只需要在你的自定义样式中使用你的元素。请注意,在以下示例中,如何Mystyle.TCombobox.downarrow
将其用作组合框中的子项之一:
style.element_create('Mystyle.TCombobox.downarrow', 'image', photo)
style.layout(
'Mystyle.TCombobox', [(
'Combobox.field', {
'sticky': NSEW,
'children': [(
'Mystyle.TCombobox.downarrow', {
'side': 'right',
'sticky': NS
}
), (
'Combobox.padding', {
'expand': '1',
'sticky': NSEW,
'children': [(
'Combobox.textarea', {
'sticky': NSEW
}
)]
}
)]
}
)]
)
推荐阅读
- mysql - 如何将两个查询结果合并到一个表中
- javascript - 为什么正则表达式与非域文本匹配?
- android - WorkManager onStopped() 方法被调用两次
- c++ - stringstream::seekp 在 Visual Studio 2015 上不起作用
- python - 更改 Django/Postgres db_table 名称
- java - @PostConstruct 不适用于特定类名的springboot
- python - 在两个cmd窗口中启动和重启python程序
- c# - 如何在 Cybersource Simple Order API 中使用部分退款
- java - FirebaseRecyclerAdapter 中的数据库查询
- c# - 如何在 Quartz.net 的作业类中使用我的一些服务和存储库?