wxpython

时间:2016-05-09 09:47:26

标签: wxpython wxwidgets

我是wxpython和wxwidgets的新手。我有wx.Dialog的代码,如下所示。

def __init__(self, parent, Name, Platform):
    wx.Dialog.__init__(self, parent, -1, 'Launch Dialog', size=(-1,-1), pos=(-1,-1))
     ###some code 
    self.createSizers()
    self.Fit() 

def createSizers()
    self.mainSizer = wx.BoxSizer(wx.VERTICAL)
    SelectionSizer = wx.StaticBoxSizer(self.staticBoxTestSelection, wx.VERTICAL)
    self.horzDetailsSizer = wx.BoxSizer(wx.HORIZONTAL) 
    self.DetailsSizer = wx.BoxSizer(wx.VERTICAL)
    ### add func here

    self.ListingSizer = wx.BoxSizer(wx.VERTICAL)
    ### add func here

     # Horizontal Splitter
    self.horzDetailsSizer.Add(self.ListingSizer, 3, wx.EXPAND)
    self.horzDetailsSizer.AddSpacer(5)
    self.horzDetailsSizer.Add(self.DetailsSizer, 2, wx.EXPAND)

    # Add subsizers to main
    SelectionSizer.Add(self.horzDetailsSizer, 1, wx.EXPAND | wx.ALL, 5)

    self.mainSizer.Add(SelectionSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5)

     ### Initialize mainSize
    self.SetSizer(self.mainSizer)

这里的问题是当self.DetailsSizer的statictextctrl sizer或listctrl sizer增加整个窗口大小的宽度时,窗口右侧的子化器宽度也会增加。

我希望修改对话框大小,并且子窗口大小应该在窗口大小内调整。也就是说,如果增加一个子窗口宽度,则相邻的子窗口应该用空间调整..

有没有办法做到这一点?请帮我摆脱这个问题。

修改

这不是关于用户调整对话框窗口的大小。它是关于水平动态增长的对话框的宽度。

对于前。在我的对话框中,我有2个框大小调整器,在默认大小(-1,-1)的窗口中命名为列表和详细信息。

在详细信息框中,我动态显示“名称”,这与列出sizer的所选选项有关。因此,“名称”的长度每次都会改变。如果长度更长,字符串是单个字,细节的宽度sizer水平增加,以便列出sizer增加。所以窗口的主要大小增加如下。

我不希望这种增长再次进入正常窗口。窗口大小应该始终固定,如果在详细信息sizer中“名称”长度增加,则列表大小调整器应缩小并调整细节大小调整器。

普通对话框:

enter image description here

动态宽度增加:

enter image description here

所需的输出为:

enter image description here

2 个答案:

答案 0 :(得分:1)

也许你需要添加一个没有比例的sizer。看看这段代码

<button type="button" id="btnAdd" onclick="addItem(); changecheckbox();">Add Item</button>

当您将比例设为0时,子项不会在x轴上增长,仅在y轴上增长(因为使用了# Horizontal Splitter self.horzDetailsSizer.Add(self.ListingSizer, 3, wx.EXPAND) # This Line need to be changed self.horzDetailsSizer.AddSpacer(5) self.horzDetailsSizer.Add(self.DetailsSizer, 2, wx.EXPAND) )。尝试改变代码如下

wx.EXPAND

此博客(http://www.blog.pythonlibrary.org/2013/11/06/wxpython-101-using-frame-styles)对wx Flags有解释。要制作一个没有调整大小的对话框,请尝试放置:

self.horzDetailsSizer.Add(self.ListingSizer, 0, wx.EXPAND)

答案 1 :(得分:0)

我不确定我是否理解您的问题,但您正在调用Fit(),以便将对话框宽度设置为最适合其内容的内容。如果您不希望这种情况发生,我在解释您的问题时,请不要致电Fit()。当然,这可能会导致对话框太窄而无法显示其中的所有内容,这就是为什么调用Fit()通常是一个好主意,但无论是否要这样做都是你的选择。