2013-08-08 12 views
0

wxGrid에 Clearquest 정보를 표시하는 작은 wxPython 응용 프로그램을 만들고 있습니다. 표의 부모는 패널이고 패널 부모는 노트북입니다. 버튼을 클릭 할 때마다 새 페이지를 만들고 정보를 얻고 표시합니다. 여태까지는 그런대로 잘됐다.wxPython, wxGrid : 그리드 하단의 흰색 부분을 제거 하시겠습니까?

제 문제는 제가 그리드의 맨 아래로 스크롤 할 때, 벗겨 내고 싶은 가로 공백이 있다는 것입니다. 누군가 그것을 제거 할 수있는 방법이 있는지 말해 줄 수 있습니까?

다음은 내 문제를 이해하는 데 도움이되는 그림입니다. 빨간색 사각형의 공백을 제거하고 싶습니다.

편집 : 아래의 요청으로, 여기에 선별기를 정의하는 방법에 대한 몇 가지 정밀도는 다음과 같습니다 당신이 볼 수 있듯이, 윈도우는 두 부분으로 나뉩니다 - 왼쪽 부분은 노트북에 최선을 다하고 있습니다 . 노트의 각 탭은 wx.Grid가 내 데이터를 표시하는 데 사용되는 패널입니다. - 오른쪽 부분은 데이터 검색을 트리거하는 버튼 (Static Box) 전용입니다. 먼저

, 나는 내가 노트북 및 버튼에 대한 정적 박스 포함 할 패널 설정하는 프레임 선언 (나는 단지 하나 개의 버튼에 대한 코드를 보여를, 다른 사람은 중요하지 않음) :

class MainFrame(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, parent=None, title='ClearQuest Python Edition') 
     self.queryHandler = CQHandler.QueryHandler() 
     panel = wx.Panel(self) 
     queryButtonsBox = wx.StaticBox(panel, -1, 'Run queries') 
     queryButtonsSizer = wx.StaticBoxSizer(queryButtonsBox, wx.VERTICAL) 
     queryButtonDAS = wx.Button(panel, label="DAS", name="1") 
     queryButtonsSizer.Add(queryButtonDAS, flag=wx.TOP | wx.EXPAND, border = 5) 
     queryButtonDAS.Bind(wx.EVT_BUTTON, self.QueryButtonClick) 
     self.noteBook = MyNoteBook(panel) 
     HBox = wx.BoxSizer(wx.HORIZONTAL) 
     HBox.Add(self.noteBook, 1, wx.EXPAND, 0) 
     HBox.Add(queryButtonsSizer, 0, wx.ALL, 5) 
     panel.SetSizer(HBox) 

class MyNoteBook(wx.Notebook): 

    def __init__(self, parent): 
     wx.Notebook.__init__(self, parent, id=wx.ID_ANY, style=wx.BK_DEFAULT) 

    def AddQueryPanel(self, title): 
     newTab = TabPanel(self) 
     self.AddPage(newTab, title, True) 
     self.CurrentPage.dataGrid.ForceRefresh() 


class TabPanel(wx.Panel): 

     def __init__(self, parent): 
      wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) 
      self.dataGrid = MainGrid(self) 
      horizontalSizer = wx.BoxSizer(wx.HORIZONTAL) 
      horizontalSizer.Add(self.dataGrid, 1, wx.EXPAND | wx.ALL, 0) 
      self.SetSizer(horizontalSizer) 

을 그리고 마지막으로, 내 MainGrid의 작은 샘플, 그것은 도움이 될 수있는 경우 : 여기

그리고는 노트북 및 노트북의 각 탭 선언하고 호출하는 방법입니다

,213,

답변

0

sizer는 어떻게 적용됩니까? 코드에 대한 세부 정보가 필요합니다.

+0

나는 첫 번째 게시물을 편집했습니다. 세부 사항이 충분한가요? 나를 도와 줘서 고마워! – FlyinPoulpus

+0

잠깐, 이것은 버그 인 것 같습니다. 비슷한 게시물을 여기에 : http://stackoverflow.com/questions/7946778/wxgrid-shows-large-empty-border-on-right –

+0

Bleh, 내가 두려워했던 것처럼 : ( 나는 developpers에 문의하여 방법은 미래 버전에 정정을 얻을 수 감사합니다 – FlyinPoulpus

0

나는이 일을하려는 다른 사람들을 위해 해결책을 찾았습니다. 이것은 곧바로 내 프로그램에서 나가기 때문에 원하는대로 조정할 수 있습니다. 사이 저는 패널이 그리드 자체보다 커지지 않도록합니다. 나는 숨겨진 테두리를 사용하여 라벨을 숨기지 않는 선을 숨 깁니다.

어떤 질문이 있습니까?

def add_grid(self, num_rows, num_cols, labels = None, grid_labels = None, 
      panel_colour = MainWindow.right_panel_color): 

    grid_panel = BuildPanel(self, BackColour = None, Border = wx.SUNKEN_BORDER) 

    grid_to_add = wx.grid.Grid(grid_panel) 

    if grid_labels is None: 
     grid_to_add.SetColLabelSize(0) 
     grid_to_add.SetRowLabelSize(0) 

    grid_to_add.CreateGrid(num_rows, num_cols) 

    total_grid_size = 350 
    min_size = total_grid_size/num_cols 

    for cols in range(0, num_cols): 

     grid_to_add.SetColMinimalWidth(cols, min_size) 
     grid_to_add.SetColSize(cols, min_size) 

    grid_to_add.SetMargins(0 - wx.SYS_VSCROLL_X, 0 - wx.SYS_HSCROLL_Y) 
    grid_to_add.ForceRefresh() 

    grid_to_add.SetDefaultCellBackgroundColour(panel_colour) 
    for row in range(0, num_rows): 
     for col in range(0, num_cols): 
      grid_to_add.SetCellBackgroundColour(row, col, wx.WHITE) #None) 

    vertical_sizer = wx.BoxSizer(wx.VERTICAL) 
    vertical_sizer.Add(grid_to_add, 1, wx.ALL, 0) 
    grid_panel.SetSizerAndFit(vertical_sizer) 


    h_sizer = wx.BoxSizer(wx.HORIZONTAL) 
    h_sizer.AddStretchSpacer(1) 
    h_sizer.Add(grid_panel, 0) 
    h_sizer.AddStretchSpacer(1) 

    return [h_sizer, grid_to_add] 
+0

내가 요즘의 시간 하나를 찾으면 그것을 시도합니다. 감사합니다 :) – FlyinPoulpus

+0

괜찮 았어! 나는 그것이 당신을 위해 일하기를 바란다. –