我们从Python开源项目中,提取了以下4个代码示例,用于说明如何使用PyQt4.uic.loadUiType()。
def get_ui_class(ui_file): """Get UI Python class from .ui file. :param ui_file: The file of the ui in safe.gui.ui :type ui_file: str """ ui_file_path = os.path.abspath( os.path.join( os.path.dirname(__file__), os.pardir, 'gui', 'ui', ui_file ) ) return uic.loadUiType(ui_file_path)[0]
def loadUiType(uiFile): """ Pyside "loadUiType" command like PyQt4 has one, so we have to convert the ui file to py code in-memory first and then execute it in a special frame to retrieve the form_class. from stackoverflow: http://stackoverflow.com/a/14195313/3781327 seems like this might also be a legitimate solution, but I'm not sure how to make PyQt4 and pyside look the same... http://stackoverflow.com/a/8717832 """ import pysideuic import xml.etree.ElementTree as xml #from io import StringIO parsed = xml.parse(uiFile) widget_class = parsed.find('widget').get('class') form_class = parsed.find('class').text with open(uiFile, 'r') as f: o = StringIO() frame = {} pysideuic.compileUi(f, o, indent=0) pyc = compile(o.getvalue(), '<string>', 'exec') exec(pyc, frame) #Fetch the base_class and form class based on their type in the xml from designer form_class = frame['Ui_%s'%form_class] base_class = eval('QtGui.%s'%widget_class) return form_class, base_class
def load_ui(name): if os.path.exists(name): uifile = name else: frame = inspect.stack()[1] filename = inspect.getfile(frame[0]) uifile = os.path.join(os.path.dirname(filename), name) if not os.path.exists(uifile): uifile = os.path.join(os.path.dirname(filename), "ui", name) widget, base = uic.loadUiType(uifile) return widget, base