【发布时间】:2014-02-28 06:38:20
【问题描述】:
级别:初学者
我正在 Windows 操作系统上使用 wxPython 开发 GUI。我在安排面板时遇到了一些问题。我的 GUI 如下图所示(当然图中省略了菜单栏和标题栏)。
我会花一些时间来解释我是如何创建这个 GUI 的。首先,我使用wx.DisplaySize() 获得屏幕尺寸。然后我使用pos=() 相应地调整我的面板。有名为 panel-1 到 panel-4 的主要 4 个面板。每个面板都包含子面板。子面板的数量不是一个常数。我使用 for 循环来创建子面板并将其添加到面板中。子面板被添加到一个sizer,然后sizer最终被应用到相应的面板。根据wx.DisplaySize(),我的屏幕尺寸是1680x1050。目前一切正常。
问题:
但是,一旦我在屏幕尺寸为 1366x768 的机器上运行我的代码,面板就没有正确定位!如何使我的 GUI 根据屏幕尺寸的变化自动调整面板的排列。我计划在从平板电脑到大屏幕 LCD 的各种屏幕尺寸上使用我的 GUI。我想我必须创建一个sizer,将这些名为 panel-1 的面板添加到 panel4 到某个主要的任意面板?或者有没有更好的办法?
目前我已禁用框架的调整大小选项。因为当我调整框架大小时(启用选项时),主窗口会调整大小,但主窗口内的组件(面板、按钮)不会调整大小。如何启用此功能,以便在调整主窗口大小时,内部组件也会相应调整大小?
我在创建这种 GUI 的方法中可能存在错误。我期待任何可以以简化方式创建这种 GUI 的建议! 感谢您的宝贵时间。
PS:如果需要,我可以粘贴代码,但我认为这并不重要,因为它只会增加帖子的长度,而且我已经尝试非常详细地解释我的问题。但是,我的代码适用于 1680x1050 的屏幕尺寸。
【问题讨论】:
-
您在使用 BoxSizer 吗?如果没有,请在此处阅读它们:wiki.wxpython.org/BoxSizerFromTheGroundUp。您通常不会使用 pos() 定位子面板,而是使用扩展和比例控件将它们放入 box sizer 中,然后让 boxsizer 处理不同的窗口大小。
-
@GreenAsJade 谢谢,我正在为子面板使用 Boxsizers。我的问题与我的帖子中提到的面板而不是子面板有关。
-
您也应该对面板使用 boxsizer :) 一个包含两个元素的垂直 box sizer:Panel5 和一个包含面板 1-4 的水平 box sizer。
标签: python user-interface wxpython wxwidgets