首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串加载XRC

从字符串加载XRC
EN

Stack Overflow用户
提问于 2012-06-22 14:02:16
回答 2查看 585关注 0票数 1

我想动态地从一些外部数据源创建GUI。源将显示其内部结构,如字段,包括数据类型、初始值、最小最大值等,以及一些可由(远程)数据对象处理的操作。应该将结构转换为文本控件和按钮,这些控件和按钮应该动态地从GUI中添加和删除。这就像使用XRC加载GUI的一部分一样,所以我想知道我是应该使用XRC还是自己编写代码。使用XRC将使测试和使用替代数据源更容易。生成XRC相当容易。因此,我现在有以下两个问题:

  1. 有什么替代方案吗?
  2. ,我找不到从字符串加载XRC的方法,因为xrc.XmlResource只使用文件名作为参数。使用临时文件似乎很麻烦,所以知道如何从字符串加载吗?
EN

回答 2

Stack Overflow用户

发布于 2012-06-22 14:26:58

在进行了一些实验之后,看起来XmlResource需要一个文件或类似文件的对象。我不知道为什么您不能只使用一些文件,但是如果这是您想要避免的事情,那么您可能可以通过创建类似文件的对象来做到这一点。见StringIO或http://pypi.python.org/pypi/filelike/0.3.3/

票数 0
EN

Stack Overflow用户

发布于 2012-07-18 23:30:00

你需要这样称呼它:

代码语言:javascript
复制
        res = wx.xrc.EmptyXmlResource() #Here it is
        res.LoadFromString(resourceText)

下面是一个例子。

代码语言:javascript
复制
import wx, wx.xrc

resourceText = '''<?xml version="1.0" encoding="UTF-8"?>
 <resource>

<object class="wxPanel" name="MyPanel">
  <object class="wxStaticText">
    <size>80,-1</size>
    <label>Hey</label>
  </object>
 </object>
</resource>
'''


class TestFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, 'Testing',
                          size=(640,480))

        res = wx.xrc.EmptyXmlResource() #Here it is
        res.LoadFromString(resourceText)

        panel = res.LoadPanel(self, "MyPanel")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(panel, 1, wx.EXPAND|wx.ALL, 5)

        self.SetSizer(sizer)
        self.SetAutoLayout(True)


if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = TestFrame(None)
    frame.Show(True)
    app.MainLoop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11157730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档