如何从wxStatusBar中删除字段

时间:2009-11-04 21:10:39

标签: wxpython field statusbar

这可能很明显,但我很想念它。我在wxpython工作。

我有一个带有几个字段的wxStatusBar(这些字段包含文本以及其他小部件)。我需要能够在整个应用会话中添加和删除这些字段。有没有办法从状态栏中删除字段,还是只需要重绘它?我想要做后者我可以使用SetFields()函数,但是我不太确定要给SetFields()的列表类型...我见过的唯一例子给它一个字符串列表,但是我有超过字符串传递它。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以通过调用mystatusbar.SetFieldsCount(numfields)来减少字段数。如果需要,使用.SetStatusWidths([list])重新缩放它们。使用.SetStatusText('string', position)更改各个位置的文字。如果您有一些隐藏在状态栏部分中的控件(例如复选框),则可以将其移动到.GetFieldRect(position)给出的位置。在wx.EVT_SIZE上或在删除/删除内容时调用它。

如果从末尾以外的某个位置删除字段(最高索引),则必须先手动移动数据。您提到您使用的是.SetFields(),只需将您之前传递的列表和.pop()取出您不想要的列表。

来自wxPython demo的一些重新定位代码:

# reposition the checkbox
def Reposition(self):
    rect = self.GetFieldRect(1) # the checkbox lives in the 2nd (index 1) slot
    self.cb.SetPosition((rect.x+2, rect.y+2))
    self.cb.SetSize((rect.width-4, rect.height-4))
    self.sizeChanged = False

wxPython Demo app中查找一些示例代码,您可以快速入侵并在其中运行。