【问题标题】:How to set font of a messagebox with Python tkinter?如何使用 Python tkinter 设置消息框的字体?
【发布时间】:2013-12-17 21:55:33
【问题描述】:

我正在使用tkinter 中提供的简单消息框,我想知道是否有任何方法可以更改字体。

这是我想要的总体思路,但 font= 选项不起作用。

from tkinter import Tk
import tkinter.messagebox as tkmsg

_root = Tk()
_root.withdraw()
tkmsg.showinfo(
    "Info",
    "Some monospaced text",
    font=("Monospace", 15)
)
_root.destroy()

有什么方法可以改变字体还是我必须使用自定义对话框?

【问题讨论】:

  • 您应该制作自己的 tkinter.Toplevel() 对话框来自定义字体。哦,使用 tkinter.font.Font() 实例。
  • @SzieberthAdam 我认为没有办法使用 Toplevel() 来设置字体。我错过了什么吗?
  • 作为 Lucas Sabião 的回答,您应该将 Label 小部件放入顶层对话框窗口。您可以自定义标签的字体。

标签: python python-3.x tkinter


【解决方案1】:

如何更改对话框文本请参见此处:Control Font in tkMessageBox

简而言之(从上面的链接逐字复制):

您可以通过执行以下操作仅配置对话框的字体:

from Tkinter import *
import tkMessageBox
r = Tk()
r.option_add('*Dialog.msg.font', 'Helvetica 12')
tkMessageBox.showinfo(message='Hello')

之后请务必致电r.option_clear() 将字体恢复正常。

【讨论】:

  • 不幸的是,它在 Python 3.4.4 中对我不起作用(即使在将 MessageBox 更改为更新的消息框大写之后)。当我执行 r.option_add('*font', 'Courier 12') 时,它更改了除消息框字体之外的所有字体。
  • @CuriousMarc 在 Python 3.6.5 中对我来说也不是。
【解决方案2】:

您可以更改字幕的默认字体:

import tkinter as tk
from tkinter import messagebox as mb
from tkinter import font
root = tk.Tk() 
font1 = font.Font(name='TkCaptionFont', exists=True)
font1.config(family='courier new', size=20)
mb.showinfo(message='Hello')

【讨论】:

    【解决方案3】:

    您应该编写自己的消息框。 Tkinter 为 Windows 或 Mac 调用系统对话框并为 Linux 生成对话框。在所有情况下都不可能更改 Tkinter 对话框。

    【讨论】:

    【解决方案4】:

    你不能。 使用顶层widgted (tkinter.Toplevel()) 和标签编写您自己的消息框!

    类似这样的东西(来自http://effbot.org/tkinterbook/label.htm

    from Tkinter import *
    
    master = Tk()
    
    w = Label(master, text="Hello, world!")
    w.pack()
    
    mainloop()
    

    希望对你有帮助!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 2011-12-24
    • 2020-10-07
    • 2021-08-04
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多