- 论坛徽章:
- 0
|
以下代码运行时如果窗口最大化最小化之前左边的scrollpanel的滚动条如果已经拉下了一定距离
RadioBox就会错位,但如果不是RadioBox,原位换成TextCtrl又完全正常,各位指点一下,先谢谢了
环境:
ActivePython-2.5.4.3-win32-x86
wxPython2.8-win32-unicode-2.8.9.1-py25
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Tue May 26 13:23:32 2009
import wx
import wx.lib.scrolledpanel as scrolled
# begin wxGlade: extracode
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.panel_1 = wx.Panel(self, -1)
self.panel_2 = scrolled.ScrolledPanel(self.panel_1, -1)
self.panel_2.SetVirtualSizeWH( -1, -1 )
self.panel_2.SetScrollRate(20,20)
self.text_ctrl_2 = wx.TextCtrl(self.panel_2, -1, "", style=wx.TE_MULTILINE)
#/*用RadioBox就运行不正常*/
self.radio_box_1 = wx.RadioBox(self.panel_2, -1, "radio_box_1", choices=["choice 1", "choice 2", "choice 3", "choice 4"], majorDimension=2, style=wx.RA_SPECIFY_ROWS)
#/*如果注释掉上一行同时去掉这一行的注释则完全正常*/
#self.radio_box_1 = wx.TextCtrl(self.panel_2, -1 , "" )
self.text_ctrl_1 = wx.TextCtrl(self.panel_1, -1, "", style=wx.TE_MULTILINE)
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("frame_1")
self.text_ctrl_2.SetMinSize((280, 500))
self.text_ctrl_1.SetMinSize((280, 300))
self.panel_2.SetMinSize( (300, -1) )
#
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_3 = wx.BoxSizer(wx.VERTICAL)
sizer_3.Add(self.text_ctrl_2, 0, 0, 0)
sizer_3.Add(self.radio_box_1, 0, 0, 0)
self.panel_2.SetSizer(sizer_3)
sizer_2.Add(self.panel_2, 0, wx.EXPAND, 0)
sizer_2.Add(self.text_ctrl_1, 1, wx.EXPAND, 0)
self.panel_1.SetSizer(sizer_2)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
# end wxGlade
# end of class MyFrame
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, "")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()
|
|
|