WxPython Choice Field只在Mac上可见

问题描述 投票:0回答:1

我正在使用wxPython在Python中开发一个跨平台的应用程序。该应用程序已完全开发,图形工具包至少暂时保持不变。

在Windows上,一切看起来都很棒。在Linux上,一切看起来都很不错。在Mac上,即使它在Windows上显示正常,我也无法在工具栏中隐藏组合框/选项。

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

enter image description here

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

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

事实上,如果我不调用AddControl,但是我创建了选项字段,工具栏作为父项,则框会被渲染,但由于缺少AddControl调用而导致事情排列不正确:

enter image description here

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

enter image description here

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

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

我不能得到虚拟的例子来重现问题,但我会继续努力。我很乐意报告一些对象属性,如果它们有助于诊断。如果有人知道什么可能导致它不显示,我真的很感激!

python macos wxpython phoenix
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.