【问题标题】:WxPython Choice Field Invisible just on MacWxPython 选择字段仅在 Mac 上不可见
【发布时间】:2018-09-11 14:42:13
【问题描述】:

我正在使用 wxPython 在 Python 中开发一个跨平台应用程序。该应用程序已经完全开发,图形工具包是一成不变的,至少目前是这样。

在 Windows 上,一切看起来都很棒。在 Linux 上,一切看起来都不错。在 Mac 上,我遇到了隐藏在工具栏中的组合框/选项的问题,即使它在 Windows 上显示良好。

这是我在 Linux 上的应用程序的快照,注意到整个“CoeffConv ...”部分是完美显示的组合框的一部分:

这是 Mac 上相同代码库的快照:

我已经尝试过使用 wx.ComboBox 和 wx.Choice 具有相同的效果。添加工具栏项后,我确保调用 Realize()。我确保调用 AddControl 以实际将对象添加到工具栏。考虑到选择字段的内容,它肯定会尝试渲染,因为间距正是我所期望的。

事实上,如果我不调用 AddControl,但我创建了以工具栏为父项的选择字段,则该框会被渲染,但由于缺少 AddControl 调用而无法正确安排:

作为另一项检查,我创建了一个带有选择演示的超级简单工具栏,它工作得很好:

所以,这是我所知道的事情的摘要:

  1. 在 Windows 上,选择字段完美无缺,表明代码不一定是错误的。
  2. 在 Linux 上,选择字段完美运行,支持代码实际上没问题的想法。
  3. 在 Mac 上,选择字段似乎存在,但不知何故不可见,这表明这是 Mac 或 Mac 上的 Python 发行版或 Mac 上 wxPython 发行版中的组合框控件的问题。
  4. 在 Mac 上,我可以在没有调用 AddControl 的情况下选择渲染(不正确但仍然),这表明组合框可以正确渲染,但添加到工具栏时的位置有些愚蠢
  5. 但是,在 Mac 上,我可以在一个虚拟示例中获得一个工具栏/选项来完全渲染,这表明它与我的实现有关...但我无法弄清楚是什么导致它,因为我正在尝试对 wx 对象进行与虚拟示例完全相同的调用。

我无法使用虚拟示例来重现问题,但我会继续尝试。如果它们有助于诊断,我很乐意报告一些对象属性。如果有人知道可能导致它不显示的原因,我将不胜感激!

【问题讨论】:

    标签: python macos wxpython phoenix


    【解决方案1】:

    虽然我找不到它在 Mac 上不起作用的根源,但我确实找到了一个可以帮助其他人的问题。

    首先介绍更多背景知识。在应用程序中,我们有多个工具栏。因此,我们使用普通的 wx.ToolBar 对象创建工具栏,并使用 sizers 将它们添加到应用程序框架中。这与使用 self.CreateToolBar() 的更标准方法形成对比,后者仅允许框架具有单个工具栏。

    当我对代码进行一次更改以使用更自然的 CreateToolBar 界面时,组合框会立即显示出来。当我这样做时,第二个工具栏搞砸了,但至少最初的工具栏工作得很好。我将研究如何在 Mac 上获取多个工具栏,但这是朝着正确方向迈出的一步。

    【讨论】:

      【解决方案2】:

      已经有一段时间了,但是如果你不能使用CreateToolBar(),那么对于 wxPython 4 还有另一个解决方案:

      小部件确实被添加到栏并保留了正确的空间量,但它们无法正确绘制。您可以通过在每个小部件控件上调用 control.Hide() 后跟 control.Show() 来解决此问题,然后使它们正确绘制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多