免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4593 | 回复: 1
打印 上一主题 下一主题

请用过wxpython中scrollpanel的同仁指点一下,scrollpanel滚动条导致RadioBox错位 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-26 14:08 |只看该作者 |倒序浏览
以下代码运行时如果窗口最大化最小化之前左边的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()

论坛徽章:
0
2 [报告]
发表于 2009-05-31 21:21 |只看该作者
只能变通一下解决问题了
没有得到指点,最后只好结合StaticBox,StaticBoxSizer和RadioButton达到同样的效果
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP