添加垂直边界

Adding vertical boarders

这是我的程序的样子

我想在 Window 的左右两侧添加深蓝色边框。尽管手动设置了大小,但出于某种原因,顶级面板 "panel" 被调整为 toplevelsizer 大小。我不知道为什么。我实现其他边界的方法是在 top-sizer 下方有一个蓝色面板并在其他 panels/widgets.

之间添加间隔物
import wx
from threading import Thread
from wx.lib.agw import ultimatelistctrl as ULC
import wx.lib.inspection


class Uploader(wx.App):


def __init__(self,redirect=False,filename=None):
    wx.App.__init__(self,redirect,filename)   
    self.width=900
    self.widthBoarder=2
    self.frame=wx.Frame(None,size=(self.width+4*self.widthBoarder,700),style = wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))

    #Fonts
    self.header=wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, "Arial")
    self.ListText=wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, "Arial")
    ######################################################################
    #Panels
    #Toplevelpanel
    self.panel=wx.Panel(self.frame,size=(self.width+4*self.widthBoarder,700)) 
    self.panel.SetBackgroundColour((65,113,156))
    #Panelfor Header
    self.panelForHeading=wx.Panel(self.panel,size=(self.width,50))
    self.panelForHeading.SetBackgroundColour((91,155,213))
    #Bottom Panel for Detail Information
    self.InfoPanel=wx.Panel(self.panel,size=(self.width,100))
    self.InfoPanel.SetBackgroundColour((195,195,195))        
    #Bottom Panel for Button
    self.ButtonPanel=wx.Panel(self.panel,size=(self.width,100))
    self.ButtonPanel.SetBackgroundColour("White")

    ######################################################################
    #widgets
    #Header
    self.NameOfDatabase=wx.StaticText(self.panelForHeading,-1)
    self.NameOfDatabase.SetLabel(' Some Header')
    self.NameOfDatabase.SetFont(self.header)

    #ultimatelist
    self.FileList=ULC.UltimateListCtrl(self.panel,size=(self.width,400),agwStyle=wx.LC_REPORT|ULC.ULC_USER_ROW_HEIGHT|ULC.ULC_SINGLE_SEL|ULC.ULC_BORDER_SELECT|ULC.ULC_AUTO_TOGGLE_CHILD)
    self.FileList.SetUserLineHeight(30)
    self.FileList.SetHeaderHeight(40)
    #self.FileList.Bind(wx.EVT_LIST_ITEM_FOCUSED,self.OnItemSelect)

    #First Column
    info=ULC.UltimateListItem()
    info._mask=wx.LIST_MASK_TEXT|wx.LIST_MASK_IMAGE|wx.LIST_MASK_FORMAT|ULC.ULC_MASK_CHECK
    info._image=[]
    info._format=0
    info._text="Select"
    info._kind=1
    self.FileList.InsertColumnInfo(0,info)
    self.FileList.SetColumnWidth(0,100)

    #Second Column
    info=ULC.UltimateListItem()
    info._mask=wx.LIST_MASK_TEXT|wx.LIST_MASK_IMAGE|wx.LIST_MASK_FORMAT|ULC.ULC_MASK_CHECK
    info._image=[]
    info._format=0
    info._text="Name"
    self.FileList.InsertColumnInfo(1,info)
    self.FileList.SetColumnWidth(1,300)

    #Third Column
    info=ULC.UltimateListItem()
    info._mask=wx.LIST_MASK_TEXT|wx.LIST_MASK_IMAGE|wx.LIST_MASK_FORMAT|ULC.ULC_MASK_CHECK
    info._image=[]
    info._format=0
    info._text="Type"
    self.FileList.InsertColumnInfo(2,info)
    self.FileList.SetColumnWidth(2,150)

    #fourth Column
    info=ULC.UltimateListItem()
    info._mask=wx.LIST_MASK_TEXT|wx.LIST_MASK_IMAGE|wx.LIST_MASK_FORMAT|ULC.ULC_MASK_CHECK
    info._image=[]
    info._format=0
    info._text="Date modified"
    self.FileList.InsertColumnInfo(3,info)
    self.FileList.SetColumnWidth(3,150)

    #Fifth Column
    info=ULC.UltimateListItem()
    info._mask=wx.LIST_MASK_TEXT|wx.LIST_MASK_IMAGE|wx.LIST_MASK_FORMAT|ULC.ULC_MASK_CHECK
    info._image=[]
    info._format=0
    info._text="Status"
    self.FileList.InsertColumnInfo(4,info)
    self.FileList.SetColumnWidth(4,198)


    ######################################################################
    #sizer
    self.TopLevelSizer=wx.BoxSizer(wx.VERTICAL)
    self.HeaderSizer=wx.BoxSizer(wx.VERTICAL)
    self.ListSizer=wx.BoxSizer(wx.VERTICAL)

    self.panelForHeading.SetSizer(self.HeaderSizer)
    self.panel.SetSizer(self.TopLevelSizer)


    #add widget to sizer and panels
    self.HeaderSizer.AddStretchSpacer()
    self.HeaderSizer.Add(self.NameOfDatabase,0, wx.ALIGN_BOTTOM | wx.ALIGN_LEFT | wx.ALL)
    self.HeaderSizer.AddSpacer(5)


    self.ListSizer.Add(self.FileList,0,wx.ALIGN_CENTER)



    self.TopLevelSizer.AddSpacer(self.widthBoarder)
    self.TopLevelSizer.Add(self.panelForHeading,0,wx.ALIGN_CENTER)
    self.TopLevelSizer.AddSpacer(self.widthBoarder)
    self.TopLevelSizer.Add(self.ListSizer,0,wx.ALIGN_CENTER)
    self.TopLevelSizer.AddSpacer(self.widthBoarder)
    self.TopLevelSizer.Add(self.InfoPanel,0,wx.ALIGN_CENTER)
    self.TopLevelSizer.AddSpacer(self.widthBoarder)
    self.TopLevelSizer.Add(self.ButtonPanel,0,wx.ALIGN_CENTER)





    self.frame.Show()

    self.TestInsertList()

    wx.lib.inspection.InspectionTool().Show()

def TestInsertList(self):

    for i in range(5):
        self.FileList.InsertStringItem(i,"",it_kind=1)
        self.FileList.SetItemFont(i,self.ListText)
        self.FileList.SetStringItem(i,1,'File '+str(i))











if __name__=='__main__':
    app=Uploader()
    app.MainLoop()

添加到TopLevelSizer的元素周围不留任何边框,所以左右方向有none。您可以简单地删除垫片并使用 Add(whatever, 0, wx.EXPAND|wx.ALL, self.widthBoarder) 让边框显示出来。