我使用Python和wxPython来创建一个UI,允许用户在第一个组合框中选择一个XML文件,并且XML中的所有组件(即按钮)将显示为下面另一个组合框的选择。很明显,当我浏览所有xml时,它在控制台中打印出正确的内容,但我似乎无法将其链接回我要查找的组合框。在
代码如下:
import wx
import os
import xml.dom.minidom
from xml.dom.minidom import parse
# get all xmls
path = "C:\Users\William\Desktop\RES\Param"
files = os.listdir(path)
class Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.xmlList = files
self.xmlPickerTitle = wx.StaticText(self, label="XML Picker", pos=(20, 30))
self.xmlPicker = wx.ComboBox(self, pos=(100, 30), size=(500, -1), choices=self.xmlList, style=wx.CB_DROPDOWN)
self.elementsTitle = wx.StaticText(self, label="Elements Found", pos=(20, 100))
# labels
self.buttonsPickerTitle = wx.StaticText(self, pos=(20,120), label="Buttons")
self.buttonList = []
self.buttonsPicker = wx.ComboBox(self, pos=(100, 120), size=(250, -1), choices=buttonList, style=wx.CB_DROPDOWN)
self.Bind(wx.EVT_COMBOBOX, self.XMLSelect,)
def XMLSelect(self, event):
xmlPicked = self.xmlList[event.GetSelection()]
DOMTree = xml.dom.minidom.parse(xmlPicked)
collection = DOMTree.documentElement
buttons = DOMTree.getElementsByTagName("Button")
for button in buttons:
if button.hasAttribute("name"):
buttonList.append(button.getAttribute("name"))
print button.getAttribute("name")
app = wx.App(False)
frame = wx.Frame(None, title = "Auto", size = (800, 600))
panel = Panel(frame)
frame.Show()
app.MainLoop()
有什么想法吗?在
提前谢谢!在
我有一个问题,文件名不包含路径,所以我不得不将它们连接起来传递到xmlspick,但这可能是linux和Windows之间的区别。}到{}
关键点是
Clear()
和{另外,
Bind
到一个特定的ComboBox
,因为你有2个。最后,设置
ComboBox
的选择,这样很明显您有可用的数据。在相关问题 更多 >
编程相关推荐