wx. xml .XmlResource.Get (). LoadPanel: не работает - PullRequest
1 голос
/ 21 марта 2020

Загрузка XR C 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')

Файл XR C действителен, поскольку другой метод LoadPanel работает без проблем.
Таким образом, панель заполнена и видима.

Метод работы:

xmlResource = wx.xrc.XmlResource('SomePanelView.xrc')
panel = xmlResource.LoadPanel(parent=parent, name='SomePanelView')

Стоит также отметить, что оба метода работают без проблем с wx.Dialog.

Я также пытался запускать такие методы, как 'Показать 'на сломанной панели. К сожалению, без какого-либо эффекта.

Я поражен и растерян. Кто-нибудь имел дело с этим раньше? Какие-либо предложения? Решения

1 Ответ

0 голосов
/ 01 апреля 2020

Итак, в конце я отвечаю на свой вопрос. 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)

Таким образом, вы наследуете панель и примените к нему панель XR C.
Это не идеальное решение.
Хотя оно и достигает моей цели.
Мне нужно было заключить несколько дополнительных шагов инициализации в один класс представления.

Надеюсь, кому-нибудь понравится. ;)

...