Добавьте полосы прокрутки в wxpython, но он не появляется - PullRequest
0 голосов
/ 04 июля 2018

Я видел много полос прокрутки в сети, но моя ситуация другая, с большим количеством объектов wx.FlexGridSizer. Сколлер не появляется.

 class MPL_Frame(wx.Frame):
    """MPL_Frame可以继承,并可修改,或者直接使用"""
    # global task
    def __init__(self, title="MPL_Frame Example In wxPython", size=(1300, 500)):
        wx.Frame.__init__(self, parent=None, title=title, size=size)
        self.scroller = wx.ScrolledWindow(self, -1)
        self.scroller.SetScrollbars(1, 1, 640, 400)
        self.grid = DataGrid(self, (17, 16))
        ship_grid = DataGrid(self, (10, 4))
        plane_grid = DataGrid(self, (10, 6))
        self.MPL = MPL_Panel_base(self)
        # self.MPL.Figure.canvas.mpl_connect('button_press_event', onClick)


        # 创建FlexGridSizer
        self.FlexGridSizer = wx.FlexGridSizer(rows=9, cols=0, vgap=5, hgap=5)
        self.FlexGridSizer.SetFlexibleDirection(wx.BOTH)

        self.RightPanel = wx.Panel(self.scroller)

        # 测试按钮1
        self.Button1 = wx.Button(self.RightPanel, -1, "TestButton", size=(50, 25), pos=(10, 10))
        self.Button1.Bind(wx.EVT_BUTTON, self.main_function)

        # 测试按钮2
        self.Button2 = wx.Button(self.RightPanel, -1, "AboutButton", size=(50, 25), pos=(10, 10))
        self.Button2.Bind(wx.EVT_BUTTON, self.readtable)

        # 测试按钮3
        self.Button3 = wx.Button(self.RightPanel, -1, "pause", size=(50, 25), pos=(10, 10))
        self.Button3.Bind(wx.EVT_BUTTON, self.onClick)

        # 测试按钮4
        self.Button4 = wx.Button(self.RightPanel, -1, "settable", size=(50, 25), pos=(10, 10))
        self.Button4.Bind(wx.EVT_BUTTON, self.settable)

        # 加入Sizer中
        self.FlexGridSizer.Add(self.Button1, proportion=0, border=5, flag=wx.ALL | wx.EXPAND)
        self.FlexGridSizer.Add(self.Button2, proportion=0, border=5, flag=wx.ALL | wx.EXPAND)
        self.FlexGridSizer.Add(self.Button3, proportion=0, border=5, flag=wx.ALL | wx.EXPAND)
        self.FlexGridSizer.Add(self.Button4, proportion=0, border=5, flag=wx.ALL | wx.EXPAND)

        self.FlexGridSizer.Add(ship_grid, proportion=0, border=0, flag=wx.ALL | wx.EXPAND)
        self.FlexGridSizer.Add(plane_grid, proportion=0, border=0, flag=wx.ALL | wx.BOTTOM)
        self.FlexGridSizer.Add(self.grid, proportion=0, border=0, flag=wx.ALL | wx.EXPAND)
        self.RightPanel.SetSizer(self.FlexGridSizer)

        self.BoxSizer = wx.BoxSizer(wx.HORIZONTAL)
        # self.BoxSizer.Add(self.MPL, proportion=0, border=2, flag=wx.ALL | wx.EXPAND)
        self.BoxSizer.Add(self.RightPanel, proportion=0, border=0, flag=wx.ALL | wx.EXPAND)
        self.scroller.SetSizerAndFit(self.BoxSizer)

        self.SetSizer(self.BoxSizer)

        # 状态栏
        # self.StatusBar()

        # MPL_Frame界面居中显示
        self.Centre(wx.BOTH)

Нет ошибки при запуске программы. Я подозреваю, что связь между скроллером и BoxSizer не установлена.

...