2011-01-29 3 views
4

나는 GUI 프로그래밍에 첫 발을 디디고 있는데, 나는 wxPython을 이해하려고 노력하고있다. 나는 wxGlade를 사용하려고 노력하고 있지만 약간 버그가있는 것으로 판명되었습니다.wxPython GridSizer - 빈 셀 다루기

GridSizer를 사용하여 레이아웃을 만들고 있습니다.

저는 여러분이 사이타마이저에 무언가를 추가 할 때마다 다음 셀에 놓이게되었습니다. 즉, 빈 셀이 있으면 뭔가 채워야합니다. 내가 맞습니까?

enter image description here

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0) 
    grid_sizer_1.Add(self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 0) 
    grid_sizer_1.Add(self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_right, 0, wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) 
:이 얻을에서 코드를 생성

wxGlade layout screenshot

문제는, :

내가 갈거야 레이아웃 (wxGlade는 스크린 샷)입니다

겉으로보기에 "Down"버튼이 8 번째 셀 대신 7 번째 셀에 들어가기 때문입니다.

이 문제를 처리하는 표준 방법은 무엇입니까? 빈 셀을 채우려면 어떤 종류의 더미 위젯을 넣으시겠습니까? 그렇다면 위젯은 무엇입니까? 아니면 잘못된 종류의 사이 타를 사용하고 있습니까?

감사합니다.

답변

9

귀하 께서 말씀 드렸듯이 ... 더미 위젯 (빈 정적 텍스트)을 추가하는 것이 효과적입니다. 또한 여러 add() 대신 AddMany()를 사용할 수도 있습니다.

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0) 
grid_sizer_1.AddMany([ 
    (self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL), 
    (self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_right, 0, wx.ALIGN_CENTER_VERTICAL), 
    (wx.StaticText(self, -1, ''), 0, wx.EXPAND), 
    (self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL) ]) 
+1

'AddMany' 팁 주셔서 감사합니다! '(0,0)'을 더미 위젯으로 사용하면 어떻습니까? 그보다 훨씬 더 간단해질 수 있다고 생각하지 마십시오 :) – Acorn

+0

Lol; 나는 그것을 독자를위한 운동으로 남겨 둘 것이다. – whitey04

+0

좋은 아이디어에 감사드립니다. 나는 패널을 추가하고 textctrl 사이에 그것은 내가 두 개의 textctrl 사이를 이동하기 위해 누른 탭에 대해 계산되었습니다. 여러 탭을 눌러 패널 사이를 덮어야했습니다. –

2

나는 선별기에 신축성 크기를 추가 의미 (0,0)를 사용하여 익숙해입니다. 따라서 empty_cell = (0,0)과 같은 단일 객체를 만든 다음 사이 처 (예 : wx.StaticText가 수락 된 대답에 사용되는 곳)에 빈 공간이 필요하면 어디서나 empty_cell에 고정하십시오.