我是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中“名称”长度增加,则列表大小调整器应缩小并调整细节大小调整器。
普通对话框:
动态宽度增加:
所需的输出为:
答案 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()
通常是一个好主意,但无论是否要这样做都是你的选择。