在tkinter中的Combobox fontsize

时间:2015-03-09 09:34:59

标签: python tkinter

您好我正在尝试使用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()

2 个答案:

答案 0 :(得分:9)

问题是ttk Combobox的下拉菜单实际上是一个简单的Tkinter Listbox所以它不受ttk风格的影响。如果可以从Combobox获取对Listbox的引用,则更改字体将很容易。但是,我无法在Tkinter找到一种方法。

根据patthoyts'编辑非常有用comment
您可以做的是使用

更改作为Combobox一部分的所有列表框的字体
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