在tkinter中的Combobox fontsize

Dee*_*rks 5 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()
Run Code Online (Sandbox Code Playgroud)

fhd*_*sdg 10

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

根据patthoyts非常有用的评论编辑.
您可以做的是更改使用Combobox的所有列表框的字体

bigfont = tkFont.Font(family="Helvetica",size=20)
root.option_add("*TCombobox*Listbox*Font", bigfont)
Run Code Online (Sandbox Code Playgroud)

这会更改作为ttk Combobox一部分的所有Listbox小部件的字体,并在调用它之后创建.
这确实影响了所有新的Comboboxes,但我认为这就是你想要的.如果您只想为此Combobox使用新字体,则可以选择将此Combobox创建为最后一个窗口小部件,并self.parent.option_add("*TCombobox*Listbox*Font", bigfont)在创建此Combobox之前立即调用.然后只有这个Combobox下的Listbox才会有新的字体.


如果您希望所有小部件都具有更大的字体,则可以使用

root.option_add("*Font", bigfont)
Run Code Online (Sandbox Code Playgroud)

或者您可以更改此答案中所述的默认字体.