def run(argv): '''start the application''' config = get_config() # py2exe if sys.platform == 'win32' and \ (hasattr(sys, 'frozen') or hasattr(sys, 'importers')): _setup_py2exe(config) # Parse arguments optparser = OptionParser() optparser.set_defaults(debug=False) optparser.add_option('--debug', action='store_true', help='Enable debug mode') (options, args) = optparser.parse_args(argv) # stderr wrapper sys.stderr = StdErrWrapper(sys.stderr) # logging logger = logging.getLogger() handler = MyStreamHandler() handler.setFormatter( logging.Formatter('%(levelname)s:%(name)s:%(message)s')) logger.addHandler(handler) logger.setLevel(logging.DEBUG if options.debug else logging.ERROR) # Create an application instance app = SingleApplication(argv, _SINGLEAPP_KEY) if app.isRunning(): app.sendMessage('activate') return 1 # Load the configuration file config.debug = options.debug config.load() # Set the application's information app.setApplicationName(config.app_name) app.setOrganizationName(__author__) app.setWindowIcon(QIcon(':/icons/icon.png')) # Setup MainWindow from .main import MainWindow main_window = MainWindow() def messageHandler(msg): if msg == 'activate': main_window.activateWindow() main_window.setVisible(True) app.messageAvailable.connect(messageHandler) # On Windows-ja if app.font().family() == u'MS UI Gothic': cand = (('Segoe UI', None), ('Meiryo UI', None), ('Tahoma', 8)) from PyQt5.QtGui import QFont for name, point in cand: ps = app.font().pointSize() if point is None: point = ps if ps != -1 else 9 font = QFont(name, point) if font.exactMatch(): app.setFont(font) break # Redirect stderr to the Error Console if not options.debug: sys.stderr.setApplication(app) # Start the application r = app.exec_() # Quit config.save() return r
# -*- coding: utf-8 -*- from PyQt5.QtWidgets import QApplication, QToolTip from PyQt5.QtGui import QFont from globalvalue import setMainWidget, DefaultFontList, DefaultFontSize, DefaultFontSizeForToolTip from mainwidget import MainWidget import sys from localelanguage import initLocale if __name__ == '__main__': #init locale initLocale() app = QApplication(sys.argv) #Try to init font with default font list for fontName in DefaultFontList: font = QFont(fontName, DefaultFontSize) if font.exactMatch(): app.setFont(font) tipFont = QFont(fontName, DefaultFontSizeForToolTip) QToolTip.setFont(tipFont) break mainWidget = MainWidget() setMainWidget(mainWidget) sys.exit(app.exec_())