如何在Windows中使用ttk主题小部件更改字体

时间:2012-04-17 17:47:59

标签: python fonts styles widget ttk

在OS X上,ttk.Style().configure('TLabelframe.label', font='helvetica 14 bold')用于更改ttk.LabelFrame小部件使用的字体。在Windows上,除了将相同的字体信息返回给ttk.Style().configure('TLabelframe.label', font='arial 14 bold')之外,ttk.Style().lookup('TLabelframe.label','font')无效。

我尝试了不同的字体名称和格式,使用TkDefaultFont创建派生样式,只是更改大小和不同的小部件(TButton.label,TCheckbutton.label)。到目前为止,无论我尝试过什么,它似乎总是以默认大小使用TkDefaultFont。

更改python27 / tcl / tk8.5 / ttk / xpTheme.tcl(Windows上的默认主题)中的字体设置确实会更改显示的字体。从主题设置中删除-font TkDefaultFont设置不会更改显示的内容。

有关这实际如何运作的任何建议吗?

编辑:之前我没有尝试更改Label小部件的字体,而且实际上有效。

2 个答案:

答案 0 :(得分:0)

我相信这个区域的代码是错误的并且会打开一张票。使用'TLableframe.Label'(注意'Label'中的大写'L'有效。'TButton.label'和'TButton.Label'不起作用,但只是'TButton'有效;'TCheckbutton'是相同的。我是无法使用任何组合更改“TEntry”的字体,包括添加“textarea”。

答案 1 :(得分:0)

对于ttk.LabelFrame,您必须创建单独的ttk.Label窗口小部件,然后使用labelwidget=操作数将其分配给LabelFrame。您可以在Label小部件上设置所需的任何字体/样式,这些字体/样式将反映在LabelFrame中。请注意,您不要为Label小部件调用几何管理器。只需实例化它,然后将其分配给LabelFrame。

这也意味着,如果要控制LabelFrame中的子控件的状态,则可以分配几乎所有需要的窗口小部件,例如ttk.Checkbutton。您必须为此编写代码,但在视觉上,它会根据Checkbutton的状态启用/禁用子控件。

来源:http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-LabelFrame.html