0

これは明らかかもしれませんが、私はそれを見逃しています。私はwxpythonで作業しています。

いくつかのフィールドを持つwxStatusBarがあります(これらのフィールドにはテキストと他のウィジェットがあります)。アプリセッション全体でこれらのフィールドを追加および削除できる必要があります。ステータスバーからフィールドを削除する方法はありますか、それとも単に再描画する必要がありますか?後者を行うには、SetFields()関数を使用できると思いますが、SetFields()に指定するリストのタイプがよくわかりません...私が見た唯一の例では、文字列のリストが表示されますが、それを渡すための文字列以上のものがあります。

前もって感謝します!

4

1 に答える 1

1

を呼び出すことにより、フィールドの数を減らすことができますmystatusbar.SetFieldsCount(numfields)。必要に応じて、を使用して再スケーリングします.SetStatusWidths([list])。を使用して、個々の位置のテキストを変更します.SetStatusText('string', position)。ステータスバーセクションに隠れているコントロール(チェックボックスなど)がある場合は、で指定された場所に移動できます.GetFieldRect(position)。wx.EVT_SIZEで、または何かを削除/削除するたびにこれを呼び出します。

末尾(最高のインデックス)以外の場所からフィールドを削除する場合は、最初にデータを手動でシフトする必要があります。使用しているとおっしゃいまし.SetFields()たが、先に渡したリストを取り出して、不要なリストを削除し.pop()てください。

wxPythonデモからのいくつかの再配置コード:

# 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デモアプリで、すばやくハックしてその中から実行できるサンプルコードを探してください。

于 2009-11-05T13:59:20.807 に答える