微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法确定wx.StaticText中文本的大小?

如何解决有没有办法确定wx.StaticText中文本的大小?

我正在处理的项目涉及创建一组面板,其中一些面板中带有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()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。