Python PyQt4,如何创建当前小部件?

Python PyQt4,如何创建当前小部件?,python,pyqt4,Python,Pyqt4,我有一个类来创建PyQt4小部件,还有一个类来解析xml以获取输入。我想创建一个UI,向小部件动态添加按钮,从传递的xml中读取,但这并没有发生: import sys import xml.etree.ElementTree as ET from PyQt4 import QtGui ui = None class userInterface(QtGui.QWidget): def __init__(self): super(userInterface, self).__

我有一个类来创建PyQt4小部件,还有一个类来解析xml以获取输入。我想创建一个UI,向小部件动态添加按钮,从传递的xml中读取,但这并没有发生:

import sys

import xml.etree.ElementTree as ET
from PyQt4 import QtGui

ui = None

class userInterface(QtGui.QWidget):
    def __init__(self):
    super(userInterface, self).__init__()

    def getFilesWindow(self):
        self.filesSelected = []
        fDialog = QtGui.QFileDialog.getOpenFileNames(self, 'Open file', '/Learning/Python/substance_XML_reading/', "SBS (*.sbs)")

        for path in fDialog:
            if path:self.filesSelected.append(path)
        return self.filesSelected

class ParseXML():

    def getXMLTags(self,fileList):
        self.tags = []
        if fileList:
            print fileList

        for eachFile in fileList:
            fileToParse = ET.parse(eachFile)
            root = fileToParse.getroot()
            for child in root:
                self.tags.append(child.tag)
        return self.tags

def getSetUI(flist):
    global ui
    if flist:
        tagsForBtns = ParseXML().getXMLTags(flist)
        print tagsForBtns
        for eachitem in tagsForBtns:
            btn = QtGui.QPushButton(ui,eachitem)


def main():
    app = QtGui.QApplication(sys.argv)
    ui = userInterface()
    fileListForUIGen = ui.getFilesWindow() # will return a list of files

    getSetUI(fileListForUIGen) # Parses each file, gets tags, creates buttons and has to add to the current window..NOT WORKING

    ui.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

要向小部件添加按钮,需要将它们放置在
QLayout

class Widget(QtGui.QWidget):
    def __init__(self):
        super(Widget, self).__init__()
        self.ui_lay = QtGui.QVBoxLayout()
        self.setLayout(self.ui_lay)

    def addButton(self, text):
        btn = QtGui.QPushButton(text, self)
        self.ui_lay.addWidget(btn)

...

for eachitem in tagsForBtns:
    ui.addButton(eachitem)
另外,如果要这样做,请确保在
main()
函数中使用
global ui

就我个人而言,我看不出拆分所有函数调用的原因。我会把它们都放在
UserInterface
类中