【问题标题】:Combobox fontsize in tkintertkinter 中的组合框字体大小
【发布时间】:2015-05-10 10:01:14
【问题描述】:

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

【问题讨论】:

  • 这可能是平台特定的问题。您使用的是哪个操作系统?

标签: python tkinter


【解决方案1】:

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

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

更改作为组合框一部分的所有列表框的字体
bigfont = tkFont.Font(family="Helvetica",size=20)
root.option_add("*TCombobox*Listbox*Font", bigfont)

这会更改所有列表框小部件的字体,这些小部件是 ttk 组合框的一部分,并且是在调用它之后创建的。
这确实会影响 所有 个新的组合框,但我认为这就是您想要的。如果您只需要此 Combobox 的新字体,您可以选择创建此 Combobox 作为最后一个小部件并在创建此 Combobox 之前调用 self.parent.option_add("*TCombobox*Listbox*Font", bigfont)。那么只有这个 Combobox 下的 Listbox 才会有新的字体。


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

root.option_add("*Font", bigfont)

或者您可以按照this answer 中的说明更改默认字体。

【讨论】:

  • 这个基本正确。如果您查看 ttk combobox.tcl 代码,您可以看到下拉列表框字体使用option add *TCombobox*Listbox.font TkTextFont 设置,因此我建议使用“*TCombobox”前缀将更改仅应用于组合框下拉列表。
  • 很好的评论,谢谢。现在我记得我见过*TCombobox*Listbox 组合,但我完全忽略了使用它来仅针对组合框列表框。我会将其添加到我的答案中。
  • 如何更改下拉箭头键的宽度
  • 据我所知,这是不可能的。
  • root.option_add('*Font', myFont) 太棒了
【解决方案2】:

在处理与 OP 相同的问题时,出现了 Deepworks 和 fhdrsdg 接受的答案的 cmets 中提到的箭头大小问题。不幸的是,我是新手,无法发表评论,因此我将其发布为答案。实际上有一种方法可以通过 Style "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

【讨论】:

  • 这似乎不再起作用。也就是说,从 style.configure 设置箭头大小不会改变箭头按钮的大小。不过,我的 Tkinter 版本是 8.6,所以我怀疑你是否真的让它工作,或者你只是在没有测试代码的情况下发布到这里。
  • @boof 这绝对有效。我在发布之前对其进行了测试,现在我重新测试了它,仍然有效。我也在8.6版。把你的代码发给我,我看看能不能让它工作,这样我们就可以在这里发布
猜你喜欢
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
相关资源
最近更新 更多