当前位置: 首页 > 面试题库 >

修改Python Tkinter中的默认字体

海鸣
2023-03-14
问题内容

我正在使用Tkinter在Python2.7中开发GUI,但我遇到了一个烦人的问题。

我想定义所有小部件使用的默认字体,如果可能的话,请在一行中定义。此行仅修改Entry或ComboBox中使用的字体:

root.option_add("*Font", "courier 10")

但不是示例的复选框标签。

我发现预定义的字体存在“ TkDefaultFont”,但是我无法更改其配置:

print tkFont.Font(font='TkDefaultFont').configure()
tkFont.Font(font='TkDefaultFont').config(family='Helvetica', size=20)
tk.TkDefaultFont = tkFont.Font(family="Helvetica",size=36,weight="bold")
print tkFont.Font(font='TkDefaultFont').configure()

返回:

{‘family’:’DejaVu
Sans’,’weight’:’normal’,’slant’:’roman’,’overstrike’:0,’underline’:0,’size’:-12}
{‘family’: ‘DejaVu
Sans’,’weight’:’normal’,’slant’:’roman’,’overstrike’:0,’underline’:0,’size’:-12}

(没有错误,但没有任何改变!)

我做错了什么?


问题答案:

Tkinter的有几个内置字体-
TkDefaultFontTkTextFontTkFixedFont等等,这些都是所谓的“命名的字体”。它们非常强大-
更改其中之一,使用它们的所有小部件也将更改。

要更改这些字体之一,请获取它的句柄,然后使用该configure方法进行更改。例如,要将大小更改TkDefaultFont为48,可以执行以下操作:

default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(size=48)

而已。您无需执行其他任何操作-使用的所有内容TkDefaultFont都会立即注意到更改。

在您的问题中,您暗示您希望TkDefaultFont所有内容都使用字体。为此,您可以option_add按照显示的方式使用:

root.option_add("*Font", default_font)

但是请注意,这option_add仅影响调用 创建的窗口小部件option_add,因此您需要在创建任何其他窗口小部件之前进行此操作。

另外请注意,option_add如果您不想打扰先获取字体实例,也可以给它加上字体名称(即:)root.option_add("*Font", "TkDefaultFont")



 类似资料:
  • 修改游戏基本设定 在已经调整了对话框的情况下,是否会觉得白底的对话框和黑底的姓名框,需要配上和原来不同的颜色和文字效果呢。 这时候就轮到Config.tjs上场了。 Config.tjs是吉里吉里/KAG的基本设定文件,包含了大量可以调整的细节。 不过Config.tjs所记录的只是一个默认设置,大部分功能也可以在后来的脚本里修改。 但对于游戏里随时都要用到的东西,例如说字体的默认颜色外观等等,直

  • 问题内容: 我有一个需要修改数据库表中列默认值的要求。该表已经是数据库中的现有表,并且当前该列的默认值为NULL。现在,如果将新的默认值添加到此列,如果我是正确的话,它将列的所有现有NULL更新为新的DEfault值。有没有一种方法可以不执行此操作,但仍在列上设置新的默认值。我的意思是我不想更新现有的NULL,并希望它们保留为NULL。 在这方面的任何帮助,不胜感激。谢谢 问题答案: 您对将会发生

  • 字体Monospaced映射到不同系统上的不同字体。在Windows上,它被映射到“Courier”,在Linux上,它被映射到“Lucida Typewriter”。 http://ui.netbeans.org/docs/ui/editor_fonts_colors/editor_fonts_and_colors.htm 我在windows上,想将单倍行距字体映射到“consolas”而不是“

  • 默认情况下,Tomcat配置的默认端口是8080。这就是为什么所有已部署的Web应用程序都可以通过URL访问的原因:http://localhost:8080/yourapp。如果希望应该在80端口上运行,则需要将默认端口8080更改为80,这是HTTP连接器的默认端口。 要更改此端口,请打开并找到以下内容: 更改为以下内容: 修改后,您可以使用"http://localhost/"来访问您的应用

  • 问题内容: 我将如何为所有实例设置默认字体。而不是分别为每个字体设置字体。 问题答案: 使用定义JLabel的默认字体: 通过:http : //coding.derkeiler.com/Archive/Java/comp.lang.java.help/2005-04/msg00395.html

  • 本文向大家介绍MySQL修改默认字符集编码的方法,包括了MySQL修改默认字符集编码的方法的使用技巧和注意事项,需要的朋友参考一下 今天又遇到修改MySQL默认字符集编码的问题,折腾了半天解决了,赶快记录下来,以后就不用每次折腾了。 查看MySQL字符集的命令是“show variables like '%char%';”。 以MySQL5.6为例,默认的字符集为: 在工作中需要将字符集全部修改为