wxpython更改消息对话框字体?

时间:2012-06-13 15:09:03

标签: python fonts wxpython messagedialog

Python 2.7.3 x64 wxPython 2.8 x64

我无法更改wxpython消息对话框的字体。我想使用固定宽度的字体(我认为wxFAMILY_MODERN是)来控制输出的格式。这是我用来测试的代码......

def infDialog (self, msg, title):
    """ Display Info Dialog Message """
    font = wx.Font(14, wx.MODERN, wx.NORMAL, wx.NORMAL)
    style = wx.OK | wx.ICON_INFORMATION | wx.STAY_ON_TOP
    dialog = wx.MessageDialog(self, msg, title, style)
    dialog.CenterOnParent()
    dialog.SetFont(font)
    result = dialog.ShowModal()
    if result == wx.ID_OK:
        print dialog.GetFont().GetFaceName()
    dialog.Destroy()
    return
# End infDialog()

但是单击OK时的结果总是“Arial”。有什么想法吗?也许我需要创建一个自定义对话框类?

谢谢,

-RMWChaos

2 个答案:

答案 0 :(得分:1)

我在互联网上寻找并发现没有人真正花时间回答这个问题,只是告诉用户创建自己的对话框类。实际上有一种简单的方法可以更改消息对话框的字体。抓住对话框的textCtrl对象,然后设置该对象的字体应该可以解决问题。

简单地替换:

dialog.SetFont(font)

txt_ctrl = dialog.text
txt_ctrl.SetFont(font)

请告诉我这是否适合您。

答案 1 :(得分:0)

wx.MessageDialog是OS / system消息对话框的包装器。我怀疑每个操作系统只允许编辑或根本不编辑。所以是的,如果字体很重要,使用自定义的wx.Dialog或通用消息对话框小部件(wx.lib.agw.genericmessagedialog)就可以了。