Python 组合框字体大小(单位:tkinter)

Python 组合框字体大小(单位:tkinter),python,tkinter,Python,Tkinter,嗨,我正在尝试使用ttk组合框创建一个带有选项的下拉列表。 在执行此操作时,我可以配置传递给它的默认值的字体大小。 但当我单击箭头时,其他值的字体大小保持不变。我正在开发用于触摸屏的应用程序,因此需要提供适当的大小。 这是示例代码,当我运行代码时,A的大小更大,单击箭头键,我看到其他值都是默认大小 #! /usr/bin/python from Tkinter import * import ttk class Application: def __init__(self, pa

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

问题是ttk组合框的下拉菜单实际上是一个简单的Tkinter,所以它不受ttk样式的影响。如果可以从组合框中获取对列表框的引用,那么更改字体将很容易。然而,我在Tkinter找不到这样做的方法

根据进行编辑非常有用。
您可以使用以下命令更改组合框中所有列表框的字体:

bigfont = tkFont.Font(family="Helvetica",size=20)
root.option_add("*TCombobox*Listbox*Font", bigfont)
这将更改所有列表框小部件的字体,这些小部件是ttk组合框的一部分,并且是在调用该组合框后创建的。
这确实会影响所有新的组合框,但我认为这是您想要的。如果您只希望此组合框使用新字体,可以选择将此组合框创建为最后一个小部件,并在创建此组合框之前调用
self.parent.option\u add(“*TCombobox*Listbox*font”,bigfont)
。然后,只有此组合框下的列表框将具有新字体


如果你想让所有的小部件都有更大的字体,你可以使用

root.option_add("*Font", bigfont)

或者您可以更改中所述的默认字体。

在处理与OP相同的问题时,出现了Deepworks和fhdrsdg在接受答案的评论中提到的箭头大小问题。不幸的是,我是新来的,不能发表评论,因此我将此作为一个答案。实际上,有一种方法可以通过样式“arrowsize”选项设置箭头大小

这允许您增加箭头大小以匹配小部件其余部分的字体大小

我在这里找到了对“arrowsize”选项的引用:

这可能是平台特有的问题。你在使用哪个操作系统?这基本上是正确的。如果您查看ttk combobox.tcl代码,您可以看到下拉列表框字体是使用
选项add*TCombobox*listbox.font TkTextFont
设置的,因此我建议使用“*TCombobox”前缀将更改仅应用于组合框下拉列表。非常好的评论,谢谢。现在我记得我已经看到了
*TCombobox*Listbox
组合,但我完全忽略了将其仅用于组合框列表框。我会将此添加到我的答案中。我如何才能更改下拉箭头键的宽度?据我所知,这是不可能的。root.option\u add('*Font',myFont)是幻想,这似乎不再有效。也就是说,从style.configure设置箭头大小不会更改箭头按钮的大小。不过,我的Tkinter版本是8.6,所以我怀疑你是否真的能用上它,或者你只是在这里发布而没有测试你的代码。@boof它肯定能用。我在发布之前测试了它,现在我重新测试了,仍然有效。我也在8.6版上。把你的代码发给我,我会看看是否能让它工作,这样我们就可以在这里发布了
style = ttk.Style()
style.configure('W.TCombobox',arrowsize = 60)
cBox = ttk.Combobox(self, style='W.TCombobox')