这可能很明显,但我很想念它。我在wxpython工作。
我有一个带有几个字段的wxStatusBar(这些字段包含文本以及其他小部件)。我需要能够在整个应用会话中添加和删除这些字段。有没有办法从状态栏中删除字段,还是只需要重绘它?我想要做后者我可以使用SetFields()函数,但是我不太确定要给SetFields()的列表类型...我见过的唯一例子给它一个字符串列表,但是我有超过字符串传递它。
提前致谢!
答案 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中查找一些示例代码,您可以快速入侵并在其中运行。