小编典典

Tkinter中的组合框字体大小

python

嗨,我正在尝试使用ttk组合框创建带有options的下拉列表。这样做时,我可以配置传递给它的默认值的字体大小。但是,当我单击箭头时,其他值的字体大小保持不变。我正在为触摸屏开发应用程序,因此我需要提供适当的大小。这是示例代码,当我运行代码时,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()

阅读 531

收藏
2021-01-20

共1个答案

小编典典

问题是ttk组合的下拉菜单实际上是一个简单的Tkinter列表框,因此它不受ttk样式的影响。如果可以从组合框获得对列表框的引用,则更改字体将很容易。但是,我在Tkinter找不到找到方法。

根据patthoyts的非常有用的评论编辑。
您可以使用以下方法更改属于组合框的所有列表框的字体:

bigfont = tkFont.Font(family="Helvetica",size=20)
root.option_add("*TCombobox*Listbox*Font", bigfont)

这将更改属于ttk组合框且在调用此组合后创建的所有列表框小部件的字体。
这确实会影响 所有
新的组合框,但是我想这就是您想要的。如果只希望此组合框使用新字体,则可以选择将此组合框创建为最后一个小部件,并self.parent.option_add("*TCombobox*Listbox*Font", bigfont)在创建此组合框之前立即调用。然后,只有此组合框下的列表框将具有新字体。


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

root.option_add("*Font", bigfont)

或者您可以按照此答案中的说明更改默认字体。

2021-01-20