2009-11-04 8 views
0

이것은 분명 할 수도 있지만 실종입니다. 나는 wxpython에서 일하고있다.wxStatusBar에서 필드를 제거하는 방법

나는 여러 필드를 가진 wxStatusBar를 가지고 있습니다.이 필드는 텍스트와 다른 위젯을 가지고 있습니다. 앱 세션 전체에서이 필드를 추가하고 제거 할 수 있어야합니다. 상태 표시 줄에서 필드를 제거 할 수있는 방법이 있습니까? 아니면 다시 그려야합니까? 나는 SetFields() 함수를 사용할 수있는 후자를 할 생각하지만 SetFields() 줄 어떤 유형의 확실하지 않다 ... 내가 본 유일한 예는 문자열 목록을 제공하지만 그것을 넘기위한 문자열 이상을 가져야한다.

미리 감사드립니다.

답변

1

mystatusbar.SetFieldsCount(numfields)으로 전화를 걸어 필드 수를 줄일 수 있습니다. 원할 경우 .SetStatusWidths([list])으로 조정하십시오. .SetStatusText('string', position)을 사용하여 개별 위치에서 텍스트를 변경하십시오. 상태 표시 줄 섹션에 일부 컨트롤 (예 : 확인란)이 숨겨져있는 경우 .GetFieldRect(position)에 지정된 위치로 이동할 수 있습니다. wx.EVT_SIZE에서 또는 제거/제거 할 때마다 호출하십시오.

끝 (가장 높은 색인)이 아닌 다른 곳에서 필드를 제거하는 경우 먼저 데이터를 수동으로 이동해야합니다. .SetFields()을 사용 중이라고 언급 했으므로 이전에 통과 한 목록과 원하지 않는 것을 .pop() 목록에서 가져옵니다.

wxPython에 데모의 일부 재배치 코드 : 빨리 해킹과 내에서 실행할 수있는 몇 가지 예제 코드에 대한 wxPython Demo app에서

# 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 

봐.

관련 문제