我有一个空间,我希望某些元素(在这里由A,B,D和G表示)各自位于设计的“角落”中。角落应该排成一行,好像四个元素中的每一个都击退了另一个元素; 一个矩形。这将包含在一个不可调整的面板中。我将有几个类似的面板,并希望保持元素的位置尽可能相同。(我需要比wx.Wizard稍微复杂的东西,但是有相同的一般想法。)
AAAAAAAAAA BB
CCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCC
DDD EEE FFF GGG
A表示大字体的文本。
B表示小字体的数字进度表(例如“1 of 7”)。
C代表一大块文本。
D,E,F和G是按钮。
G按钮与其他按钮分开以实现功能。
我试图嵌套wx.BoxSizers
(一个垂直框内的水平框)没有运气。我的第一个问题wx.BoxSizer
是.SetMinSize
我的最后一行没有得到尊重。第二个问题是,我不知道如何使G按钮“占用空间”而不会变得太大,或者我如何将它卡在右边缘和底边缘上。
我曾试图使用a wx.GridBagSizer
,但遇到了完全不同的问题。
经过各种在线教程和wxPython in Action之后,我有点沮丧。相关论坛似乎每两周会看一次活动。“玩弄它”让我无处可去; 我觉得好像我正试图在铺好地毯的地方找到一个驼峰。
发布于 2019-07-10 18:08:20
首先,您需要一个垂直分级器将窗口分成3行:AB,C和DEFG:
frame_sizer = wx.BoxSizer(wx.VERTICAL)
接下来,您需要第一行的水平sizer:
first_sizer = wx.BoxSizer(wx.HORIZONTAL)
# add the items A and B to first_sizer
# now we add first_sizer to frame_sizer
frame_sizer.Add(first_sizer)
然后,对于第二行,我们只需将C控件添加到sizer:
frame_sizer.Add(C)
......确保以下内容:
C.SetMinSize()
)现在,对于最后一行,最好的选择是使用另一个水平分级器。
wx.BoxSizer(wx.HORIZONTAL)
# add DEF
# now add some space between them
wx.AddSizer(10)
# now add G
希望这适合你。如果没有,最好的办法是在Code :: Blocks中使用像wxSmith这样的GUI设计器(它是专为C ++设计的,但至少可以用来了解事物的外观 - wxPython应该有1到1 -1与wxWidgets的对应关系)
https://stackoverflow.com/questions/-100009106
复制相似问题