【问题标题】:Avoiding empty spaces on the sides of the panels in wxPython避免 wxPython 中面板两侧的空白
【发布时间】:2014-04-01 18:05:18
【问题描述】:

我正在 Windows 8 操作系统上使用 wxPython v3.0 和 python v2.7。 代码如下。

问题:如果垂直滚动条完全滚动到底部,水平滚动条完全滚动到右侧,那么您会注意到面板底部和面板的右侧,如下图所示。如何避免这种情况?这是默认行为还是我做错了什么?如果有人可以在他/她的系统上进行测试并确认这是否是正常行为,那就太好了?

代码

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()

感谢您的宝贵时间!

【问题讨论】:

    标签: python python-2.7 user-interface wxpython


    【解决方案1】:

    这很正常。 wx.ScrolledWindow 将虚拟大小四舍五入到滚动速率的下一个倍数,因此您最终会得到 0 到滚动速率之间的额外像素。

    【讨论】:

    猜你喜欢
    • 2014-12-17
    • 2018-10-18
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多