Wxpython 如何更改状态栏中状态文本的位置?

Wxpython 如何更改状态栏中状态文本的位置?,wxpython,Wxpython,我的状态栏中有一行、一列的状态,我想知道如何将它的位置更改为右下角 代码: 我尝试通过执行self.SetPosition将位置设置为随机位置: def Status_Bar(self): #Status Bar self.statusbar = self.CreateStatusBar() self.StatusLineColumn(self) self.SetPosition(2, 2) 但是它给了我这个错误:TypeError:Window.SetPosi

我的状态栏中有一行、一列的状态,我想知道如何将它的位置更改为右下角

代码:

我尝试通过执行self.SetPosition将位置设置为随机位置:

def Status_Bar(self):
    #Status Bar
    self.statusbar = self.CreateStatusBar()
    self.StatusLineColumn(self)
    self.SetPosition(2, 2)

但是它给了我这个错误:TypeError:Window.SetPosition():参数1有意外的类型“int”

您需要使用
setFieldScont()
SetStatusWidths()
定义状态栏中的字段数量以及它们的映射方式。使用
SetStatusText(“text”,n)
设置文本,其中
n
是文本字段的索引

下面是一个示例,其中我将第三个字段设置为150像素宽的固定长度,其他两个字段(第一个和第二个)共享剩余空间[-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()

#!/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()