关于wxPython的字体

bearnedzq 2010-11-05 06:29:49

# 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。
完整可运行的代码如下:

#!/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()
...全文
520 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bearnedzq 2010-11-08
  • 打赏
  • 举报
回复
font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
能工作,字体可以放大或缩小。
angel_su 2010-11-05
  • 打赏
  • 举报
回复
可能有啥差异st1.SetFont(font)又自己新生一个,所以此font非彼font设置无效,试试

font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
bearnedzq 2010-11-05
  • 打赏
  • 举报
回复
试了,还是么有效果啊。

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

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()
zanpen2000 2010-11-05
  • 打赏
  • 举报
回复
加这句
self.SetFont(font)

37,739

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧