您好我正在尝试使用ttk Combobox创建带有选项的下拉列表。 这样做我可以配置传递给它的默认值的字体大小。 但是当我点击箭头时,其他值的字体大小保持不变。我正在开发触摸屏的应用程序,所以我需要提供适当的大小。 下面是示例代码,当我运行代码时,A的大小更大,按下单击箭头键,我看到其他值是默认大小。
#! /usr/bin/python
from Tkinter import *
import ttk
class Application:
def __init__(self, parent):
self.parent = parent
self.combo()
def combo(self):
self.box_value = StringVar()
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,font=("Helvetica",20))
self.box['values'] = ('A', 'B', 'C')
self.box.current(0)
self.box.grid(column=0, row=0)
if __name__ == '__main__':
root = Tk()
app = Application(root)
root.mainloop()
答案 0 :(得分:9)
问题是ttk Combobox的下拉菜单实际上是一个简单的Tkinter Listbox所以它不受ttk风格的影响。如果可以从Combobox获取对Listbox的引用,则更改字体将很容易。但是,我无法在Tkinter找到一种方法。
根据patthoyts'编辑非常有用comment。
您可以做的是使用
bigfont = tkFont.Font(family="Helvetica",size=20)
root.option_add("*TCombobox*Listbox*Font", bigfont)
这会更改属于ttk Combobox的所有Listbox小部件的字体,并且在调用它之后创建。
这确实影响了所有新的组合框,但我认为这就是你想要的。如果您只想为此Combobox使用新字体,则可以选择将此Combobox创建为最后一个窗口小部件,并在创建此Combobox之前立即调用self.parent.option_add("*TCombobox*Listbox*Font", bigfont)
。然后只有这个Combobox下的Listbox才会有新的字体。
如果您希望所有小部件都有更大的字体,可以使用
root.option_add("*Font", bigfont)
或者您可以按照this answer。
中的说明更改默认字体答案 1 :(得分:0)
在处理与OP相同的问题时,出现了Deepworks和fhdrsdg接受的答案的注释中提到的箭头大小问题。不幸的是我是新手,不能发表评论,因此我将其发布为答案。实际上,有一种方法可以通过样式“ arrowsize”选项设置箭头大小。
style = ttk.Style()
style.configure('W.TCombobox',arrowsize = 60)
cBox = ttk.Combobox(self, style='W.TCombobox')
这允许您增加箭头大小以匹配其余小部件的字体大小。
我在这里找到了对“ arrowsize”选项的引用: Tcl8.6.10/Tk8.6.10 Documentation > Tk Commands > ttk_combobox