如何解决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 举报,一经查实,本站将立刻删除。