微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wxpython:防止特定字段的水平增长

如何解决wxpython:防止特定字段的水平增长

| 我有3个基本方面的GUI。一个列表控件,该控件跨越按钮的两个区域上方的窗口的整个宽度,该区域根据按钮的功能进行分组。 调整窗口大小时,所有3个区域的大小都会与窗口的增长成比例地调整。我想发生的是两个按钮区域不进行任何高度增长,但允许宽度增长。 这可能吗? 这是我使用的示例。我使用wxGlade生成
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
# generated by wxGlade 0.6.3 on Thu Apr 14 07:05:59 2011

import wx

# begin wxGlade: extracode
# end wxGlade



class mainFrame(wx.Frame):
    def __init__(self,*args,**kwds):
        # begin wxGlade: mainFrame.__init__
        kwds[\"style\"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self,**kwds)
        self.panelLower = wx.Panel(self,-1)
        self.panelUpper = wx.Panel(self,-1)
        self.sizerPassword_staticBox = wx.StaticBox(self.panelLower,-1,\"Password Settings\")
        self.sizerInstall_staticBox = wx.StaticBox(self.panelLower,\"Install Actions\")
        self.sizerStatus_staticBox = wx.StaticBox(self.panelUpper,\"Status\")
        self.listStatus = wx.ListCtrl(self.panelUpper,style=wx.LC_REPORT|wx.SUNKEN_BORDER)
        self.list_ctrl_1 = wx.ListCtrl(self.panelLower,style=wx.LC_REPORT|wx.SUNKEN_BORDER)

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: mainFrame.__set_properties
        self.SetTitle(\"frame_1\")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: mainFrame.__do_layout
        mainSizer = wx.GridSizer(2,1,0)
        sizerLower = wx.GridSizer(1,2,0)
        sizerInstall = wx.StaticBoxSizer(self.sizerInstall_staticBox,wx.HORIZONTAL)
        sizerInstallButtons = wx.GridSizer(1,0)
        sizer_4 = wx.BoxSizer(wx.VERTICAL)
        sizerPassword = wx.StaticBoxSizer(self.sizerPassword_staticBox,wx.HORIZONTAL)
        sizerPasswordButtons = wx.GridSizer(3,8,0)
        sizerStatus = wx.StaticBoxSizer(self.sizerStatus_staticBox,wx.VERTICAL)
        sizerStatus.Add(self.listStatus,wx.EXPAND,0)
        self.panelUpper.SetSizer(sizerStatus)
        mainSizer.Add(self.panelUpper,0)
        sizerPassword.Add(sizerPasswordButtons,0)
        sizerLower.Add(sizerPassword,0)
        sizerInstallButtons.Add(self.list_ctrl_1,0)
        sizerInstallButtons.Add(sizer_4,0)
        sizerInstall.Add(sizerInstallButtons,0)
        sizerLower.Add(sizerInstall,0)
        self.panelLower.SetSizer(sizerLower)
        mainSizer.Add(self.panelLower,0)
        self.SetSizer(mainSizer)
        mainSizer.Fit(self)
        self.Layout()
        # end wxGlade

# end of class mainFrame


if __name__ == \"__main__\":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    mainFrame = mainFrame(None,\"\")
    app.SetTopWindow(mainFrame)
    mainFrame.Show()
    app.MainLoop()
    

解决方法

import wx

class MainWindow(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,**kwargs)
        self.panel1 = wx.Panel(self)
        self.panel1.SetBackgroundColour(wx.GREEN)
        self.panel2 = wx.Panel(self)
        self.panel2.SetBackgroundColour(wx.RED)
        self.panel3 = wx.Panel(self)
        self.panel3.SetBackgroundColour(wx.WHITE)

        self.sizer1 = wx.BoxSizer()
        self.sizer2 = wx.BoxSizer(wx.VERTICAL)
        self.sizer1.Add(self.panel1,proportion=1,flag=wx.EXPAND)
        self.sizer1.Add(self.panel2,flag=wx.EXPAND)
        self.sizer2.Add(self.panel3,flag=wx.EXPAND)
        self.sizer2.Add(self.sizer1,proportion=0,flag=wx.EXPAND)

        self.SetSizerAndFit(self.sizer2)       
        self.Show()

app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
    ,像这样?
import wx


class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__ (self,None)
        self.SetBackgroundColour(wx.GREEN)

        bSizer1 = wx.BoxSizer(wx.VERTICAL)

        panel1 = wx.Panel(self)
        bSizer1.Add(panel1,1,wx.EXPAND | wx.ALL,5)

        bSizer2 = wx.BoxSizer(wx.HORIZONTAL)

        panel2 = wx.Panel(self,size=(-1,50))
        bSizer2.Add(panel2,5)

        panel3 = wx.Panel(self,50))
        bSizer2.Add(panel3,5)

        bSizer1.Add(bSizer2,wx.EXPAND,5)

        self.SetSizer(bSizer1)


app = wx.PySimpleApp()
app.TopWindow = f = Frame()
f.Show()
app.MainLoop()
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。