【发布时间】:2016-05-09 09:47:25
【问题描述】:
我对 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 sizers 或 listctrl sizers 增加整个窗口大小的宽度并且窗口右侧的 subsizers 宽度也在增加时。
我希望固定对话框的大小,并且subsizer应该在窗口大小内调整。即如果一个subsizer宽度增加,相邻的subsizer应该随着空间调整..
有没有办法做到这一点?请帮我解决这个问题。
编辑:
这不是关于用户调整对话框窗口的大小。它是关于对话框的宽度动态水平增长。
例如。在我的对话框中,我在默认大小(-1,-1)的窗口中有 2 个名为列表和详细信息的框大小器。
在详细信息框中,我正在动态显示“名称”,这与列表尺寸器中的选定选项相关。所以“名称”的长度每次都会改变。如果长度更大并且字符串是单个单词details sizer 的宽度水平增加,因此列表 sizer 增加。所以窗口的 main sizer 增加如下。
我不希望这种增长并再次进入正常窗口。窗口大小应始终固定,如果细节尺寸器中“名称”长度增加,列表尺寸器应缩小并随细节尺寸器调整。
普通对话框:
动态宽度增加:
想要的输出是:
【问题讨论】:
-
不清楚您的期望是什么。您是否希望对话框具有固定大小,以便用户无法调整它的大小?或者用户应该能够调整它的大小,但右边的空间应该保持不变?请澄清。
-
不,它实际上不是关于用户调整窗口的。它是动态地水平调整窗口的大小,例如。文本大小(字符串长度)在任何一个 subsizer 中增加或减少都会改变窗口的宽度(水平 sizer)以及 subsizer。寡妇的宽度应该始终固定,即使子尺寸器宽度增加,以便它应该与其他子尺寸器一起管理空间。我不知道如何在 wxDialog 中做到这一点