Вам необходимо определить количество полей в строке состояния и то, как они отображаются, используя SetFieldsCount()
и SetStatusWidths()
.Текст задается с помощью SetStatusText("Text",n)
, где n
- это индекс поля для текста.
Вот пример, где я устанавливаю 3-е поле с фиксированной длиной в 150 пикселей в ширину, а другое2 (1-й и 2-й) разделяют оставшееся пространство [-1, -1]:
#!/usr/bin/python
# coding: utf-8
import wx
import wx.stc
class TestWin(wx.Frame):
def __init__(self, ptitle):
wx.Frame.__init__(self, None, 1, title = ptitle, size = (500, 300))
menuFile = wx.Menu()
menuFile.Append(wx.ID_EXIT, "&Quit\tCTRL+q")
self.control = wx.stc.StyledTextCtrl(self,wx.ID_ANY,style=wx.TE_MULTILINE|wx.VSCROLL)
self.sbar = wx.StatusBar(self, 1)
self.sbar.SetFieldsCount(3)
self.sbar.SetStatusWidths([-1,-1,150])
self.SetStatusBar(self.sbar)
self.sbar.SetStatusText("First position",0)
self.sbar.SetStatusText("Second position",1)
self.sbar.SetStatusText("Third position",2)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
self.Bind(wx.stc.EVT_STC_MODIFIED , self.StatusLineColumn, self.control)
def StatusLineColumn(self, e):
line = self.control.GetCurrentLine() + 1
col = self.control.GetColumn(self.control.GetCurrentPos())
stat = "Line %s, Column %s" % (line, col)
self.sbar.SetStatusText("", 0)
self.sbar.SetStatusText("", 1)
self.sbar.SetStatusText(stat, 2)
def OnExit(self, evt):
self.Destroy()
class App(wx.App):
def OnInit(self):
window = TestWin("Test Window")
window.Show(True)
self.SetTopWindow(window)
return True
app = App()
app.MainLoop()