2014-04-01 39 views
0

我在Windows 8操作系統上使用wxPython v3.0和python v2.7。代碼如下。在wxPython中避免面板兩側的空白空間

問題:如果你完全滾動垂直滾動條底部,完全滾動水平滾動條的右側,那麼你應在面板的底部和的右側看到空的空間如下圖所示。如何避免這種情況?這是默認行爲還是我做錯了什麼?如果有人可以在他/她的系統上進行測試並確認這是否爲正常行爲,那將會很棒。

image

代碼

import wx 
import wx.lib.scrolledpanel 

class GUI(wx.Frame): 
    def __init__(self, parent, id, title): 
     screenWidth = 700 
     screenHeight = 400 
     screenSize = (screenWidth, screenHeight) 
     wx.Frame.__init__(self, None, id, title, size=screenSize) 
     myFont = wx.Font(15, wx.MODERN, wx.NORMAL, wx.BOLD) 
     mainSizer = wx.BoxSizer(wx.VERTICAL) 
     panelsSizer = wx.BoxSizer(wx.HORIZONTAL) 
     sizer1 = wx.BoxSizer(wx.VERTICAL) 
     sizer2 = wx.BoxSizer(wx.VERTICAL) 
     mainPanel = wx.lib.scrolledpanel.ScrolledPanel(self, -1,style=wx.SIMPLE_BORDER) 
     mainPanel.SetupScrolling() 
     panel1 = wx.lib.scrolledpanel.ScrolledPanel(mainPanel, -1, style=wx.SIMPLE_BORDER) 
     panel1.SetupScrolling(scroll_y=False) 
     panel2 = wx.lib.scrolledpanel.ScrolledPanel(mainPanel, -1, style=wx.SIMPLE_BORDER) 
     panel1.SetBackgroundColour('#cccFFF') 
     panel2.SetBackgroundColour('#FFFaaa') 
     panelsSizer.Add(panel1, 1, wx.ALL|wx.EXPAND) 
     panelsSizer.Add(panel2, 2, wx.ALL|wx.EXPAND) 
     mainPanel.SetSizer(panelsSizer) 

     k = 0 
     #Populating the panel-1 with panels to show scroll bars 
     for i in range(1,20): 
      lPanels = 'lPanel'+str(k) 
      lPanels = wx.Panel(panel1) 
      label0 = str(k+1)+ '. '+'Panel-1 #############################' 
      text0 = wx.StaticText(lPanels, -1, label0) 
      text0.SetFont(myFont) 
      sizer1.Add(lPanels, 0, wx.ALL|wx.EXPAND, 5) 
      sizer1.Add(wx.StaticLine(panel1), 0, wx.ALL|wx.EXPAND, 0) 
      k += 1 

     k = 0 
     #Populating the panel-2 with panels to show the scroll bars 
     for i in range(1,20): 
      sPanel ='sPanel' +str(k) 
      sPanel = wx.Panel(panel2) 
      label = str(k)+ '. Panel-2#############################' 
      text = wx.StaticText(sPanel, -1, label) 
      text.SetFont(myFont) 
      sizer2.Add(sPanel, 0, wx.ALL|wx.EXPAND, 5) 
      sizer2.Add(wx.StaticLine(panel2), 0, wx.ALL|wx.EXPAND, 0) 
      k += 1 

     panel1.SetSizer(sizer1) 
     panel2.SetSizer(sizer2) 
     mainSizer.Add(mainPanel, 15, wx.EXPAND|wx.ALL) 
     self.SetSizer(mainSizer) 

if __name__=='__main__': 
    app = wx.App() 
    frame = GUI(parent=None, id=-1, title="Test") 
    frame.Show() 
    app.MainLoop() 

謝謝您的時間!

回答

1

這是正常的。 wx.ScrolledWindow將虛擬大小舍入到下一個滾動速率的倍數,所以最終會在0和滾動速率之間增加額外的像素。

+0

非常感謝wxPython先生。如果你能看看我的這個問題,我將不勝感激。 :) https://stackoverflow.com/questions/22849216/transparent-panel-doesnt-updates-its-background-after-being-moved-dragged-in-wx –