我想从一些外部数据源动态创建GUI。源将显示其内部结构,例如字段,包括数据类型,初始值,最小值等,以及可由(远程)数据对象处理的一些操作。应该将结构转换为文本控件和按钮,应该动态地从GUI添加和删除。 这非常像使用XRC加载GUI的一部分,所以我想知道我是否应该使用XRC或自己编写代码。使用XRC可以更轻松地测试和使用替代数据源。生成XRC相当容易。所以现在我有以下两个问题:
答案 0 :(得分:0)
经过实验后,看起来XmlResource需要一个文件或类文件对象。我不知道为什么你不能只使用一些文件,但是如果你想避免这种情况,那么你可以通过创建类似文件的对象来实现。请参阅StringIO或http://pypi.python.org/pypi/filelike/0.3.3/
答案 1 :(得分:0)
你需要这样称呼它:
res = wx.xrc.EmptyXmlResource() #Here it is
res.LoadFromString(resourceText)
这是一个例子。
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()