+ -
当前位置:首页 → 问答吧 → 关于wxPython的字体

关于wxPython的字体

时间:2010-11-05

来源:互联网

Python code

#        font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
#        font.SetPointSize(5)

        font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Courier New')
        font.SetPointSize(9)



当我使用 wx.SystemSettings_GetFont 获得字体,然后再用 SetPointSize 改变字体大小,
不管我将字体设为多大,或设小,都没有效果,在后继的使用中,字体总是保持一个默认的大小。

而用 wx.Font(...) 新建一个字体,再用 SetPointSize 改变字体大小,效果却立竿见影。
要它变大,就变大,要它变小,就变小。

不明白为什么?

我使用的是 Windows XP平台,wxPython的版本是2.8,python的版本是 2.7。
完整可运行的代码如下:
Python code

#!/usr/bin/python
# -*- coding: utf_8 -*-

import wx

class GoToClass(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(390, 350))
        panel = wx.Panel(self, -1)

#        font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
#        font.SetPointSize(5)

        font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Courier New')
        font.SetPointSize(9)

        vbox = wx.BoxSizer(wx.VERTICAL)

        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        st1 = wx.StaticText(panel, -1, u'类的名称')
        st1.SetFont(font)
        hbox1.Add(st1, 0, wx.RIGHT, 8)
        tc = wx.TextCtrl(panel, -1)
        hbox1.Add(tc, 1)
        vbox.Add(hbox1, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 10)

        vbox.Add((-1, 10))

        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
        st2 = wx.StaticText(panel, -1, 'Matching Classes')
        st2.SetFont(font)
        hbox2.Add(st2, 0)
        vbox.Add(hbox2, 0, wx.LEFT | wx.TOP, 10)

        vbox.Add((-1, 10))

        hbox3 = wx.BoxSizer(wx.HORIZONTAL)
        tc2 = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE)
        hbox3.Add(tc2, 1, wx.EXPAND)
        vbox.Add(hbox3, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10)

        vbox.Add((-1, 25))

        hbox4 = wx.BoxSizer(wx.HORIZONTAL)
        cb1 = wx.CheckBox(panel, -1, 'Case Sensitive')
        cb1.SetFont(font)
        hbox4.Add(cb1)
        cb2 = wx.CheckBox(panel, -1, 'Nested Classes')
        cb2.SetFont(font)
        hbox4.Add(cb2, 0, wx.LEFT, 10)
        cb3 = wx.CheckBox(panel, -1, 'Non-Project classes')
        cb3.SetFont(font)
        hbox4.Add(cb3, 0, wx.LEFT, 10)
        vbox.Add(hbox4, 0, wx.LEFT, 10)

        vbox.Add((-1, 25))

        hbox5 = wx.BoxSizer(wx.HORIZONTAL)
        btn1 = wx.Button(panel, -1, 'Ok', size=(70, 30))
        hbox5.Add(btn1, 0)
        btn2 = wx.Button(panel, -1, 'Close', size=(70, 30))
        hbox5.Add(btn2, 0, wx.LEFT | wx.BOTTOM , 5)
        vbox.Add(hbox5, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)

        panel.SetSizer(vbox)
        self.Centre()
#        self.SetClientSize(panel.GetBestSize())
        self.Show(True)


app = wx.App(redirect=False)
GoToClass(None, -1, u'汉仪颜楷繁')
app.MainLoop()

作者: bearnedzq   发布时间: 2010-11-05

加这句
self.SetFont(font)

作者: zanpen2000   发布时间: 2010-11-05

试了,还是么有效果啊。

我使用的是 Windows XP平台,wxPython的版本是2.8,python的版本是 2.7。
我将代码简化了些:
Python code

class GoToClass(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(390, 350))
        panel = wx.Panel(self, -1)

        font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        self.SetFont(font)
        font.SetPointSize(30)
        
#        font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Courier New')
#        font.SetPointSize(9)
        
        st1 = wx.StaticText(panel, -1, u'类的名称')
        st1.SetFont(font)

        self.Centre()
#        self.SetClientSize(panel.GetBestSize())
        self.Show(True)


app = wx.App(redirect=False)
GoToClass(None, -1, u'汉仪颜楷繁')
app.MainLoop()

作者: bearnedzq   发布时间: 2010-11-05