遵循BoxSizer 从头开始教程中的良好建议,我正在重构代码以将 wx.LEFT/RIGHT/TOP/BOTTOM 标志分解为“spacers” - 所以:
horizontal_sizer.Add(someControl, 0, wx.LEFT, border)
变成:
horizontal_sizer.Add((border, 0))
horizontal_sizer.Add(someControl)
对于上述情况,我确信它们是完全等价的。但是,如果wx.EXPAND
和 一个非零比例被指定为:
horizontal_sizer.Add(someControl, proportion, wx.LEFT | wx.EXPAND, border)
这是下面的:
horizontal_sizer.Add((border, 0))
horizontal_sizer.Add(someControl, proportion, wx.EXPAND)
完全等同于上述?从视觉上看,它们看起来确实相同,但我有什么遗漏吗?换句话说,是否wx.EXPAND
影响边界,如果是,如何影响?
当然,上面的例子是微不足道的,但是在复杂的 sizer 布局中,上面的转换(如教程中所建议的那样)极大地简化了代码并使常见的 UI 模式脱颖而出,这些模式在 OR'ed 标志和数字的混乱中是完全不可读的。
编辑:将不胜感激有关添加垫片的正确方法的反馈。例如我在这里看到:
mainSizer.Add(wx.StaticText(self), 0, wx.EXPAND) # add a "spacer"
或者在我维护人们的代码中:
horizontal_sizer.Add((0, 0), 1) # which seems equivalent to Add((0, 0))
现在在 python 中应该有一种——最好只有一种——明显的方法——这里至少有 4 种——所以一些专家的反馈表示赞赏。