gpt4 book ai didi

python - 在 wx.GridBagSizer 中放置元素(面板)

转载 作者:太空狗 更新时间:2023-10-30 00:12:08 24 4
gpt4 key购买 nike

我正在使用 gridbagsizer 将两个面板放置在一个框架内。

control_panel = wx.Panel(self, id=ID_CONTROL_PANEL)
main_panel = wx.Panel(self, id=ID_MAIN_PANEL)

frame_sizer = wx.GridBagSizer(1, 1)
frame_sizer.Add(control_panel, (0, 0), (2, 5), flag=wx.EXPAND)
frame_sizer.Add(main_panel, (2, 0), (5, 5), flag=wx.EXPAND)
frame_sizer.AddGrowableRow(0)
frame_sizer.AddGrowableCol(0)
self.SetSizer(frame_sizer)

我希望 control_panel 位于 main_panel 之上(如上所示)。然而,这是我得到的输出:

alt text

我不知道为什么顶部面板比底部面板大得多,而我已经指定了相反的面板。 (2, 5) 用于顶部,(5, 5) 用于底部。当我将它的大小调整得更小时,它也有一个奇怪的行为,它基本上给了我我想要的东西(见下图),但我不知道当我再次把它变大时如何保持比例。

alt text

但是,当您开始调整大小时(即使调整幅度很小),您会看到(下图)形状和比例在另一个方向上发生了巨大变化(底部变得更小,顶部变得更大)。

alt text

我仍在努力学习这个 sizer,但在我见过的任何示例中都找不到这个问题。还尝试对所有参数进行试验并进行一些测试,但我无法弄清楚这里发生了什么。任何帮助将不胜感激。

编辑:添加下面的图片以帮助下面的评论。 alt text

最佳答案

就个人而言,我会在垂直方向上使用 BoxSizer。这是一个简单的例子:

import wx

class MyForm(wx.Frame):

def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial")

# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)

control_panel = wx.Panel(panel)
control_panel.SetBackgroundColour("Yellow")
main_panel = wx.Panel(panel)
main_panel.SetBackgroundColour("Blue")

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(control_panel, 3, wx.EXPAND)
sizer.Add(main_panel, 1, wx.EXPAND)
panel.SetSizer(sizer)

# Run the program
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyForm().Show()
app.MainLoop()

我更改了每个面板的背景颜色,以便更容易分辨哪个是哪个。请注意,我将控制面板的比例设置为 3,将主面板的比例设置为 1。您可能还想看一下 Widget Inspection Tool,以帮助您对其进行可视化:

http://wiki.wxpython.org/Widget%20Inspection%20Tool

关于python - 在 wx.GridBagSizer 中放置元素(面板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com