def run(self): import os import pathlib from collections import namedtuple fix_pyqt_import() try: from PyQt5.uic.driver import Driver except ImportError: print("PyQt5 not installed, skipping `parsec.core.gui.ui` generation.") return self.announce("Generating `parsec.core.gui.ui`", level=distutils.log.INFO) Options = namedtuple( "Options", ["output", "import_from", "debug", "preview", "execute", "indent", "resource_suffix"], ) ui_dir = pathlib.Path("parsec/core/gui/forms") ui_path = "parsec/core/gui/ui" os.makedirs(ui_path, exist_ok=True) for f in ui_dir.iterdir(): o = Options( output=os.path.join(ui_path, "{}.py".format(f.stem)), import_from="parsec.core.gui", debug=False, preview=False, execute=False, indent=4, resource_suffix="_rc", ) d = Driver(o, str(f)) d.invoke()
def main(): parser = optparse.OptionParser(usage="pyuic5 [options] <ui-file>", version=Version) parser.add_option("-p", "--preview", dest="preview", action="store_true", default=False, help="show a preview of the UI instead of generating code") parser.add_option("-o", "--output", dest="output", default="-", metavar="FILE", help="write generated code to FILE instead of stdout") parser.add_option("-x", "--execute", dest="execute", action="store_true", default=False, help="generate extra code to test and display the class") parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False, help="show debug output") parser.add_option("-i", "--indent", dest="indent", action="store", type="int", default=4, metavar="N", help="set indent width to N spaces, tab if N is 0 [default: 4]") g = optparse.OptionGroup(parser, title="Code generation options") g.add_option("--import-from", dest="import_from", metavar="PACKAGE", help="generate imports of pyrcc5 generated modules in the style 'from PACKAGE import ...'") g.add_option("--from-imports", dest="from_imports", action="store_true", default=False, help="the equivalent of '--import-from=.'") g.add_option("--resource-suffix", dest="resource_suffix", action="store", type="string", default="_rc", metavar="SUFFIX", help="append SUFFIX to the basename of resource files [default: _rc]") parser.add_option_group(g) opts, args = parser.parse_args() if len(args) != 1: sys.stderr.write("Error: one input ui-file must be specified\n") sys.exit(1) sys.exit(invoke(Driver(opts, args[0])))
def convert_single_file(self,filename,preview = False): if filename : base_name = basename(filename) output_file = join(dirname(filename),splitext(base_name)[0]+self.le_suffix.text() +".py") # complete sample : opts: {'preview': False, 'output': '/tmp/r.oo', 'execute': False, 'debug': False, 'indent': 4, 'import_from': None, 'from_imports': False, 'resource_suffix': '_ui'} opts = optparse.Values() opts.ensure_value("preview", preview) opts.ensure_value("execute", False) opts.ensure_value("debug", False) opts.ensure_value("indent", 4) opts.ensure_value("from_imports", False) opts.ensure_value("import_from", None) opts.ensure_value("resource_suffix", "_rc") opts.ensure_value("output", output_file) args =filename driver = Driver(opts,args) try: driver.invoke() # print(filename,output_file,exit_status) # QMessageBox.information(self, "转换成功", str(exit_status), QMessageBox.Ok) return output_file except IOError as e: QMessageBox.warning(self, "转换异常", str(e), QMessageBox.Ok)
def main(): globs = glob.iglob('./**/*.ui', recursive=True) for filename in globs: file, extension = os.path.splitext(filename) file_name = os.path.basename(file) dir_name = os.path.dirname(file) new_filename = f'ui_{file_name}.py' output_path = os.path.join(dir_name, new_filename) print(f'Compiling UI file {filename} -> {output_path}') args = { 'preview': False, 'output': output_path, 'execute': False, 'debug': False, 'indent': 4, 'import_from': None, 'from_imports': False, 'resource_suffix': '_rc' } args = optparse.Values(args) driver = UICDriver(args, filename) exit_status = 1 try: exit_status = driver.invoke() except IOError as e: driver.on_IOError(e) except SyntaxError as e: driver.on_SyntaxError(e) except NoSuchClassError as e: driver.on_NoSuchClassError(e) except NoSuchWidgetError as e: driver.on_NoSuchWidgetError(e) except Exception as e: driver.on_Exception(e) print(f'Compile completed with exit code: {exit_status}')
def generate(self, argumentList): # Format: [<ui file path>, <option 1>, <argument 1>, ...] opts, args = self.parser.parse_args(argumentList) driver = Driver(opts, args[0]) exit_status = 1 try: exit_status = driver.invoke() except IOError as e: driver.on_IOError(e) except SyntaxError as e: driver.on_SyntaxError(e) except NoSuchClassError as e: driver.on_NoSuchClassError(e) except NoSuchWidgetError as e: driver.on_NoSuchWidgetError(e) except Exception as e: driver.on_Exception(e)
def invokeUic(arguments): Version = "Python User Interface Compiler %s for Qt version %s" % ( QtCore.PYQT_VERSION_STR, QtCore.QT_VERSION_STR) parser = optparse.OptionParser(usage="pyuic5 [options] <ui-file>", version=Version) parser.add_option( "-p", "--preview", dest="preview", action="store_true", default=False, help="show a preview of the UI instead of generating code") parser.add_option("-o", "--output", dest="output", default="-", metavar="FILE", help="write generated code to FILE instead of stdout") parser.add_option("-x", "--execute", dest="execute", action="store_true", default=False, help="generate extra code to test and display the class") parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False, help="show debug output") parser.add_option( "-i", "--indent", dest="indent", action="store", type="int", default=4, metavar="N", help="set indent width to N spaces, tab if N is 0 [default: 4]") g = optparse.OptionGroup(parser, title="Code generation options") g.add_option("--from-imports", dest="from_imports", action="store_true", default=False, help="generate imports relative to '.'") g.add_option( "--resource-suffix", dest="resource_suffix", action="store", type="string", default="_rc", metavar="SUFFIX", help="append SUFFIX to the basename of resource files [default: _rc]") parser.add_option_group(g) opts, args = parser.parse_args(arguments) if len(args) != 1: sys.stderr.write("Error: one input ui-file must be specified\n") sys.exit(1) invoke(Driver(opts, args[0]))