wxPython状态栏StatusBar
实战wxPython系列-038
状态栏是一个狭窄的窗口,可以沿着框架的底部放置,以提供少量的状态信息。它可以包含一个或多个字段,其中一个或多个字段的长度可以根据窗口的大小而变化。在wxPython中控件wx.StatusBar提供了状态栏的功能。
一、wx.StatusBar简介
wx.StatusBar控件用于显示应用程序状态信息。它可以分为几个部分来展示不同的信息。可以将其他控件插入到wx.StatusBar中,有两种方法可以为主窗口创建一个状态栏,一种是手动创建自己的wx.StatusBar并调用SetStatusBar()方法,另一种方法是调用CreateStatusBar()方法创建(默认创建方法)。
wx.StatusBar支持的窗口样式:wx.STB_SIZEGRIP:在状态栏的右侧显示一个可用于调整父窗口大小的抓手。wx.STB_SHOW_TIPS:要显示状态文本因该状态文本不适合窗格宽度而被省略/截断时给出提示。wx.STB_ELLIPSIZE_START:当状态文本宽度超过状态栏窗格的宽度时,将状态文本的开头替换为省略号(使用wx.Control.Ellipsize)。wx.STB_ELLIPSIZE_MIDDLE:当状态文本宽度超过状态栏窗格的宽度时,将状态文本的中间替换为省略号(使用wx.Control.Ellipsize)。wx.STB_ELLIPSIZE_END:当状态文本宽度超过状态栏窗格的宽度时,将状态文本的结尾替换为省略号(使用wx.Control.Ellipsize)。wx.STB_DEFAULT_STYLE:默认样式:包括wx.STB_SIZEGRIP|wx.STB_SHOW_TIPS| wx.STB_ELLIPSIZE_END|wx.FULL_REPAINT_ON_RESIZE。
wx.StatusBar常用方法:GetBorders ( self ):返回在字段区域内呈现字段文本时使用的水平和垂直边框尺寸。 GetField ( self , n ):返回表示第n个字段的wx.StatusBarPane。 GetFieldRect ( self , i ):返回字段内部边界矩形的大小和位置。 GetFieldsCount ( self ):返回状态栏中的字段数。 GetStatusStyle ( self , n ):返回第n个字段的样式。 GetStatusText ( self , i=0 ):返回与状态栏字段关联的字符串。如果字段有效,则为状态字段字符串,否则为空字符串。 GetStatusWidth ( self , n ):返回第n个字段的宽度。 PopStatusText ( self , field=0 ):将文本恢复到最后一次调用PushStatusText之前的值。注意,如果SetStatusText同时被调用,PopStatusText将不会改变文本,也就是说,它不会覆盖对状态文本的显式更改,而只是恢复保存的文本。 PushStatusText ( self , string , field=0 ):在每个字段堆栈中保存当前字段文本,并将字段文本设置为作为参数传递的字符串。 SetFieldsCount ( self , number=1 , widths=None ):设置字段的数量,可选的字段宽度。 SetMinHeight ( self , height ):设置状态栏的最小可能高度。实际高度可能大于此处指定的高度,这取决于状态栏使用的字体大小。 SetStatusStyles ( self , styles ):设置状态行中字段的样式,可以使字段显示为平的或凸起的,而不是标准的下沉式3D边框。 SetStatusText ( self , text , i=0 ) :设置第i个字段的状态文本。给定的文本将替换当前文本。状态栏的显示将立即更新,因此在调用此函数后不需要调用wx.Window.Update。SetStatusWidths ( self , widths ):设置状态行中字段的宽度。有两种类型的字段:固定宽度和可变宽度字段。对于固定宽度的字段,应该以像素为单位指定它们的(常量)宽度。对于可变宽度字段,指定一个负数,指示字段应该如何展开:所有可变宽度字段的剩余空间根据这个数字的绝对值在它们之间进行划分。宽度为-2的可变宽度字段的值是宽度为-1的字段的两倍,以此类推。例如,要在状态栏的右侧创建一个宽度为100的固定字段,另外两个字段分别占剩余空间的66%和33%,您应该使用包含-2、-1和100的数组。
图1:wx.StatusBar类继承关系
二、wx.StatusBar演示 #状态栏(wx.StatusBar) import wx class SampleStatusBar(wx.Frame): def __init__(self, *args, **kw): super(SampleStatusBar, self).__init__(*args, **kw) self.InitUi() def InitUi(self): #设置标题 self.SetTitle("实战wxPython: 状态栏演示") #设置窗口尺寸 self.SetSize(360, 240) panel = wx.Panel(self) button = wx.Button(panel, label="按钮", pos = (20, 20)) chkBox = wx.CheckBox(panel, label="复选框", pos = (20, 90)) cmbBox = wx.ComboBox(panel, pos = (120, 22), choices=["Python", "Ruby"]) slider = wx.Slider(panel, 5, 6, 1, 10, (120, 90), (110, -1)) panel.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter) button.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter) chkBox.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter) cmbBox.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter) slider.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter) self.sb = self.CreateStatusBar() self.Centre() def OnWidgetEnter(self, e): name = e.GetEventObject().GetClassName() self.sb.SetStatusText(name + "控件") def main(): app = wx.App() sample = SampleStatusBar(None) sample.Show() app.MainLoop() if __name__ == "__main__": main()
在上面的例子中,在一个wx.Frame控件中放置了五个控件。如果将鼠标指针悬停在这些控件上,它的名称将显示在wx.StatusBar中。panel.Bind(wx.EVT_ENTER_WINDOW, self.OnWidgetEnter)
如果我们进入一个控件的区域,就会生成EVT_ENTER_WINDOW事件。self.sb = self.CreateStatusBar()
使用CreateStatusBar()方法创建状态栏。def OnWidgetEnter(self, e): name = e.GetEventObject().GetClassName() self.sb.SetStatusText(name + "控件")
在OnWidgetEnter()方法中,根据鼠标输入得到控件的名称。然后使用SetStatusText()方法将控件的名称显示出来。
图2:wx.StatusBar演示
三、本文知识点 使用wx.StatusBar显示状态信息。
前一篇:wxPython - 基本控件之滚动条ScrollBar
丧偶感悟没有完美的人生不完美才是人生作者永失我爱的莉莉安图片源自网络如有侵权联系删除春有百花秋有月,夏有凉风冬有雪。每一个季节都有自己的特色和风韵,人也是一样。每个人都有自己的春花秋月,都有自己的完美的或是不完美的人
给我停止贩卖焦虑头号解忧馆你有没有经常刷到这种视频,感觉自己虽然每天看到搞笑的也会开心一下下,看到美丽的风景也会欢喜一下下,但是这些快乐都是短暂的,过去之后只能感觉到空虚感觉自己对所有事情都没有兴
如果一直不见面,你会忘了我吗男女之间一旦在一起之后,应该会有很多故事,可也只有两种结局。我们从那年花开,爱在海棠,直到白发苍苍,携手看夕阳也或者,我们再不能相拥,只能将所有往事付诸飘过的风,下过的雨,将故事随
女性产后进补,你是选公鸡还是母鸡?我的一位朋友曾问我女人生产后炖鸡汤选择哪种鸡比较好,我告诉他说女人产后要进补,进补菜肴自然少不了鸡汤。别小看炖鸡汤,这里面的学问大着哩那么公鸡母鸡,到底选哪种炖汤更好呢?炖母鸡可以
双胞胎赵姓宝宝起名赵璟逸赵璟致取自闲情逸致。2019年时为一对双胞胎男宝取的名字。宝妈希望孩子一生平安顺遂,不要劳累。此名字正合家长的寄托与意愿。孩子八字木过旺,已致木多火塞,可选金五行为用神,但某
时尚早知道!2023春夏时尚流行趋势头条创作挑战赛四大时装周里的秀场作品,无论是在色彩设计,还是风格上,都为我们提供了明年春夏非常准确的趋势。我们从时装周后半段的巴黎和米兰秀场中,发掘一些更具有趋势性,同时也更具有实
心灵感应般的量子纠缠获得诺贝尔奖难道宇宙和时间不存在?北京时间10月4日下午,2022年诺贝尔物理学奖揭晓,三位研究量子纠缠的科学家阿斯佩克劳泽和蔡林格获奖。也用事实证明量子纠缠并非是爱因斯坦口中所说的鬼魅般暗箱操作,而是实际存在。两
女性法定产假多少天?产假是否包含国家法定节假日女性产假98天。女职工产假期间的生育津贴,对已经参加生育保险的,按照用人单位上年度职工月平均工资的标准由生育保险基金支付对未参加生育保险的,按照女职工产假前工资的标准由用人单位支付
身材高挑的百褶裙小姐姐,可爱又时尚,特别有女人味身材高挑的百褶裙小姐姐,可爱又时尚,特别有女人味这件白色的上衣与灰色的牛仔裤很相配,充满了怀旧之情。浅色圆领白衬衫,配以黑领装饰,时尚时尚持久,红色以甜美时尚的风格装饰,轻薄的牛仔
年龄大也不要慌,我教你高龄试管如何备孕?晚婚晚育似乎已成为一种趋势,尤其是现在的快节奏生活,很多人把生子一事一拖再拖,于是怀孕难的现象腾空出世!不少大龄女性,开始慌了!大家都知道,大龄很难自然怀孕,而难就难在以下几点基础
老人丢掉6岁男孩书包逼让座,亲爸看到后一把按回坐好别动从小老师和家长就教育孩子尊老爱幼,而且尊敬老人也是全世界人民的一个共识,对老人的尊敬和关心更是考察人品非常重要的一项。小益看到这样一则新闻一对父子一起出门坐公交,宝爸发现6岁的儿子