问题描述
我正在处理的项目涉及创建一组面板,其中一些面板中带有StaticText对象,并且我想预先确定文本的大小,以便可以确定a)使面板上的文字大小文字和b)其他面板还剩多少空间。
需要注意的是,我是在手动进行大小调整和放置,而不使用任何wx.Sizer。
解决方法
wx.Font
抢险了!
如果您不使用sizer,则您将负责这些窗口小部件的size
。
只需为适当的静态文本调整font
并估算其大小即可。
import wx
class Mywin(wx.Frame):
def __init__(self,parent,title):
super(Mywin,self).__init__(parent,title = title,size = (700,500))
panel = wx.Panel(self)
box = wx.BoxSizer(wx.VERTICAL)
lbl0 = wx.StaticText(panel,-1,pos=(10,10))
lbl1 = wx.StaticText(panel,100))
lbl2 = wx.StaticText(panel,190))
txt = "Python GUI development using wxPython"
font = wx.Font(16,wx.ROMAN,wx.ITALIC,wx.NORMAL)
lbl0.SetFont(font) #Set font and size for lbl
lbl0.SetLabel(txt+' x16')
lbl0.SetSize((16*(len(txt)),30))
lbl0.SetBackgroundColour('lightgreen')
lbl1.SetLabel(txt+' xNormal') #No font change for lbl1
lbl1.SetBackgroundColour('lightblue')
font = self.GetFont()
font.SetPointSize(22)
lbl2.SetFont(font) #Set font size for lbl2
lbl2.SetLabel(txt+' x22')
lbl2.SetSize((22*(len(txt)),34))
self.Show()
app = wx.App()
Mywin(None,'StaticText demo')
app.MainLoop()