python-3.x - wx.xml.XmlResource.Get().LoadPanel:不起作用
问题描述
在现有实例上加载 XRC wx.Panel 不起作用。
尽管尝试显示它是空的,但没有报告错误。
错误的方法:
import wx
import wx.xrc
class SomePanelViewModel(wx.Panel):
def __init__(self, parent):
super().__init__()
xmlResource = wx.xrc.XmlResource('SomePanelView.xrc')
xmlResource.LoadPanel(panel=self, parent=parent, name='SomePanelView')
XRC 文件是有效的,因为其他方法LoadPanel
没有问题。
因此面板已填充且可见。
工作方法:
xmlResource = wx.xrc.XmlResource('SomePanelView.xrc')
panel = xmlResource.LoadPanel(parent=parent, name='SomePanelView')
还值得一提的是,这两种方法都适用于 wx.Dialog 没有问题。
我还尝试在损坏的面板上运行诸如“显示”之类的方法。不幸的是没有任何效果。
我感到震惊和困惑。以前有人处理过吗?有什么建议么?解决方案?
解决方案
所以最后我要回答我自己的问题。xD
这个问题看起来像一个库错误。
因此我决定做一个解决方法:
class XrcPanelView(wx.Panel):
def __init__(self, parent):
super().__init__(parent=parent)
xrcFilePath = 'path/to/your.xrc'
xmlResource = wx.xrc.XmlResource(xrcFilePath)
self._xrcPanel = xmlResource.LoadPanel(parent=self, name='ViewName')
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self._xrcPanel, 1, wx.EXPAND | wx.ALL, 0)
这样您就可以继承一个面板并在其上应用您的 XRC 面板。
这不是一个完美的解决方案。
虽然它达到了我的目的。
我需要在一个视图类中封装一些额外的初始化步骤。
希望有人会喜欢。;)
推荐阅读
- r - 先验内存不足
- sql - SQL Server 中受影响的行的详细信息
- node.js - 更改列名 Sequilize
- android - 在不同驱动器上安装 android studio 时的 Android sdk 位置
- curl - 命令池如何工作?以及我们如何重定向到支付网关?Magento 2
- php - 如何在PHP中按其他列获取表组中的数据
- ios - 错误:没有这样的功能:iOS 上的 sqlcipher_export
- swift - swift 中使用 class() 和 class.init() 的区别
- oracle - PLSQL:ORA-14551:无法在查询中执行 DML 操作
- makefile - 从 makefile 中获取参数并构建二进制文件