以下是代码,界面通过布局分为self.panelhead 和self.panelbody两个panel,self.panelbody又分为panel1和滚动画布panel22,希望点击按钮时从panel1切换到panel22,但是现在发现panel22没有滚动条。
请问如何修改可以让panel22的尺寸充满body并且内容超出尺寸时有滚动条
class exam(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, '基础测试',
style=wx.CAPTION | wx.MINIMIZE_BOX | wx.CLOSE_BOX | wx.SYSTEM_MENU
)
#box>panel>box
self.panelhead=wx.Panel(self,size=(817, 73))
self.panelbody = wx.Panel(self,size=(817, 600))
self.Init_head()
self.Init_Body()
vbox0 = wx.BoxSizer(wx.VERTICAL)
self.Bind(wx.EVT_CLOSE, self.Onclose)
self.panelhead.Fit()
self.panelbody.Fit()
vbox0.Add(self.panelhead, proportion=1, border=2, flag=wx.ALL | wx.EXPAND)
vbox0.Add(self.panelbody, proportion=8, border=2, flag=wx.ALL | wx.EXPAND)
self.SetSizer(vbox0)
self.Fit()
self.Show()
print(1,self.panelhead.GetSize())
print(2,self.panelbody.GetSize())
def Init_head(self):
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.vbox.Add(wx.StaticText(self.panelhead,-1,'员工培训'),0, wx.ALL | wx.CENTER, 5)
box1 = wx.BoxSizer(wx.HORIZONTAL)
box1.Add(wx.StaticText(self.panelhead,-1,'Name'),1,wx.ALL | wx.EXPAND, 5)
box1.Add(wx.StaticText(self.panelhead, -1, os.getlogin()), 0, wx.ALL | wx.EXPAND, 5)
box1.AddStretchSpacer(1)
box1.Add(wx.StaticText(self.panelhead, -1, '题目数量/完成数量'), 0, wx.ALL | wx.EXPAND, 5)
box1.Add(wx.StaticText(self.panelhead, -1, '0/10'), 1, wx.ALL | wx.EXPAND, 5)
box1.AddStretchSpacer(1)
box1.Add(wx.StaticText(self.panelhead, -1, '完成时间'), 0, wx.ALL | wx.EXPAND, 5)
box1.Add(wx.StaticText(self.panelhead, -1, '60'), .5, wx.ALL | wx.EXPAND, 5)
box1.Add(wx.StaticText(self.panelhead, -1, 'min'), .5, wx.ALL | wx.EXPAND, 5)
box1.AddStretchSpacer(2)
self.btn1=wx.Button(self.panelhead, -1, '开始')
box1.Add(self.btn1, 0, wx.ALL | wx.EXPAND, 5)
box1.Add(wx.Button(self.panelhead, -1, '提交'), 0, wx.ALL | wx.EXPAND, 5)
box1.Add(wx.Button(self.panelhead, -1, '提交'), 0, wx.ALL | wx.EXPAND, 5)
self.vbox.Add(box1, 0, wx.ALL | wx.CENTER, 5)
self.panelhead.SetSizer(self.vbox)
self.btn1.Bind(wx.EVT_BUTTON,self.start)
def Init_Body(self):
self.panelbody1 = wx.Panel(self.panelbody) #设置俩panel,一显示一隐藏
self.panelbody22 = wx.ScrolledWindow(self.panelbody)
self.panelbody22.SetScrollbars(1, 1, 200, 100) # 是否横向|竖向滚动条,小于该长度时出现滚动条
self.panelbody22.SetScrollRate(10, 20) # 滚动速度
self.panelbody1.Show(True)
self.panelbody22.Show(False)
vbox = wx.BoxSizer(wx.VERTICAL)
a=''' 考试準備及介紹:\n
1.考试时间60Min,超时自动提交\n
2.提交後,培訓者需自行對主觀題(填空、文字應用題、實操題)進行評分後,再對測試人進行反饋,查缺補漏\n'''
vbox.Add(wx.StaticText(self.panelbody1, -1, a,style=wx.TE_READONLY | wx.TE_MULTILINE),0, wx.ALL | wx.EXPAND, 5)
self.panelbody1.SetSizer(vbox)
self.panelbody1.Fit()
self.Initpanel2()
# 问卷界面
def Initpanel2(self):
vbox = wx.BoxSizer(wx.VERTICAL)
a = '1.请问xxx是xxx吗?()'
for i in range(20):
vbox.Add(wx.StaticText(self.panelbody22, -1, a, style=wx.TE_READONLY ), 0, wx.LEFT |wx.TOP | wx.EXPAND,5)
vbox.Add(wx.RadioBox(self.panelbody22, choices=['2 ','5 ','6 ','d '],majorDimension=0, style=wx.RA_SPECIFY_COLS), 0, wx.ALL | wx.EXPAND,0)
#majorDimension每行最大选项数
self.panelbody22.SetSizerAndFit(vbox)
self.panelbody22.Fit()
self.panelbody22.FitInside()
self.panelbody22.Layout()
def Onclose(self, event):
wx.Exit()
print('end')
def start(self,event):
btn = event.GetEventObject()
btn.Disable()
self.panelbody1.Show(False)
self.panelbody22.Show(True)