def main(): argv = sys.argv # Trick to set the style / not found how to do it in pythonic way argv.extend(["-style", "universal"]) app = QGuiApplication(argv) qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar") imgProvider = MatplotlibIconProvider() # !! You must specified the QApplication as parent of QQmlApplicationEngine # otherwise a segmentation fault is raised when exiting the app engine = QQmlApplicationEngine(parent=app) engine.addImageProvider("mplIcons", imgProvider) context = engine.rootContext() data_model = DataSeriesModel() context.setContextProperty("dataModel", data_model) mainApp = Form(data=data_model) context.setContextProperty("draw_mpl", mainApp) engine.load(QUrl('main.qml')) win = engine.rootObjects()[0] mainApp.figure = win.findChild(QObject, "figure").getFigure() rc = app.exec_() # There is some trouble arising when deleting all the objects here # but I have not figure out how to solve the error message. # It looks like 'app' is destroyed before some QObject sys.exit(rc)
def start(self): """Display the GUI""" myApp = QApplication(sys.argv) sys.excepthook = lambda typ, val, tb: error_handler(typ, val, tb) myApp.setOrganizationDomain('mlox') myApp.setOrganizationName('mlox') icon_data: bytes = resource_manager.resource_string( "mlox.static", "mlox.ico") icon = QIcon() pixmap = QPixmap() pixmap.loadFromData(icon_data) icon.addPixmap(pixmap) myApp.setWindowIcon(icon) myEngine = QQmlApplicationEngine() # Need to set these before loading myEngine.rootContext().setContextProperty("python", self) myEngine.addImageProvider('static', PkgResourcesImageProvider()) qml: bytes = resource_manager.resource_string("mlox.static", "window.qml") myEngine.loadData(qml) # These two are hacks, because getting them in the __init__ and RAII working isn't self.debug_window = ScrollableDialog() self.clipboard = myApp.clipboard() self.analyze_loadorder() sys.exit(myApp.exec())
def main(blocks=None, angle=None): app = QApplication(sys.argv) app_engine = QQmlApplicationEngine() context = app_engine.rootContext() # WARNING: ALL THE ADDIMAGEPROVIDER LINES BELOW ARE REQUIRED TO MAKE # WARNING: QML BELIEVE THE PROVIDER IS VALID BEFORE ITS CREATION analysis_image_provider = PyplotImageProvider(fig=None) app_engine.addImageProvider("analysisprovider", analysis_image_provider) win = get_main_window(app_engine) detector = DetectionInterface(app, context, win, display_name="detectionGraph", image_provider=analysis_image_provider, image_provider_name="analysisprovider") context.setContextProperty('py_detector', detector) if blocks is not None: detector.set_blocks(blocks, angle) win.show() # detector.detect() # to display cell 0 detector.init_ui() app.exec_()
def run(): app = QGuiApplication([]) engine = QQmlApplicationEngine() qmlRegisterType(model.PersonModel, 'TestModel', 1, 0, 'PersonModel') provider = ImageFaceProvider() engine.addImageProvider("facesProvider", provider) engine.load(QUrl.fromLocalFile("./gui/main/MainWindow.qml")) app.exec_()
def main(): app = QGuiApplication(sys.argv) qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar") imgProvider = MatplotlibIconProvider() engine = QQmlApplicationEngine(parent=app) engine.addImageProvider("mplIcons", imgProvider) context = engine.rootContext() data_model = DataSeriesModel() context.setContextProperty("dataModel", data_model) mainApp = Form(data=data_model) context.setContextProperty("draw_mpl", mainApp) engine.load(QUrl('main.qml')) win = engine.rootObjects()[0] mainApp.figure = win.findChild(QObject, "figure").getFigure() rc = app.exec_() sys.exit(rc)
from PyQt5.QtQml import QQmlApplicationEngine from PyQt5.QtWidgets import QApplication from analysis.probe.gui.backend_classes import PythonBackendClass1, Logger from analysis.probe.gui.image_providers import PyplotImageProvider DEBUG = False if __name__ == '__main__': app = QApplication(sys.argv) appEngine = QQmlApplicationEngine() context = appEngine.rootContext() analysis_image_provider1 = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider1", analysis_image_provider1) analysis_image_provider2 = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider2", analysis_image_provider2) # ALL THE ADDIMAGEPROVIDER LINES BELOW ARE REQUIRED TO MAKE QML BELIEVE THE PROVIDER IS VALID BEFORE ITS CREATION # appEngine.addImageProvider('viewerprovider', CvImageProvider()) # analysis_image_provider = PyplotImageProvider(fig=None) # appEngine.addImageProvider("analysisprovider", analysis_image_provider) conf = { 'shared_directory': './' # FIXME: this is obviously BS } qml_source_path = os.path.join(conf['shared_directory'], 'qml', 'gui_qtquick', 'gui_qtquick.qml')
default_image = 'images/default.dcm' # Main application start app = QApplication([]) app.setWindowIcon(QIcon(':/images/icon.ico')) app.setOrganizationName("K-space Explorer") app.setOrganizationDomain("k-space.app") app.setApplicationName("K-space Explorer") engine = QQmlApplicationEngine() ctx = engine.rootContext() # Image manipulator and storage initialisation with default image engine.addImageProvider("imgs", ImageProvider()) im = ImageManipulators(default_image) # Loading GUI file # engine.load('ui_source/ui.qml') engine.load(QUrl('qrc:/ui.qml')) win = engine.rootObjects()[0] py_mainapp = MainApp(ctx, win) ctx.setContextProperty("py_MainApp", py_mainapp) win.show() sys.exit(app.exec_())
def main(): """The main entry point when used as regular app It assumes a session is selected. When not, a dummy session None is used. A real session can be selected from the menu. Either an existing session or new one using a csv-file. """ # mainly for mpv program sys.exitfunc = cleanup_mpv gd.config = startup() # always start without secondary session gd.config['Session2'] = None gd.globals = readGlobals() # sys_argv = sys.argv # sys_argv += ['--style', 'material'] app = QGuiApplication(sys.argv) locale.setlocale(locale.LC_NUMERIC, "C") # needed by filedialog (bepaald waar configfile van Qt komt te staan) Dit voor rtcnoordconfig gebruiken? app.setOrganizationName("RTC noord") app.setOrganizationDomain("RTC") app.setApplicationName("RtcNoordApp") qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar") imgProvider = MatplotlibIconProvider() engine = QQmlApplicationEngine(parent=app) engine.addImageProvider("mplIcons", imgProvider) context = engine.rootContext() # Setup pieces gd.data_model = DataSensorsModel() context.setContextProperty("sensorModel", gd.data_model) gd.mainPieces = FormPieces(data=gd.data_model) context.setContextProperty("draw_mpl", gd.mainPieces) # model to create pieces gd.data_model2 = DataPiecesModel() context.setContextProperty("makePiecesModel", gd.data_model2) # View piece gd.data_model3 = DataSensorsModel() context.setContextProperty("sensorModel3", gd.data_model3) # model for secondary session gd.data_model4 = DataSensorsModel() context.setContextProperty("sensorModel4", gd.data_model4) gd.mainView = FormView(data=gd.data_model3, data2=gd.data_model4) context.setContextProperty("piece_mpl", gd.mainView) gd.data_model5 = DataPiecesModel() context.setContextProperty("viewPiecesModel", gd.data_model5) # Boat gd.boattablemodel = BoatTableModel() context.setContextProperty("boatTableModel", gd.boattablemodel) gd.boatPlots = BoatForm() context.setContextProperty("boat_mpl", gd.boatPlots) # Crew gd.crewPlots = CrewForm() context.setContextProperty("crew_mpl", gd.crewPlots) engine.load("qml/main.qml") win = engine.rootObjects()[0] gd.mainPieces.figure = win.findChild(QObject, "pieces").getFigure() gd.mainView.figure = win.findChild(QObject, "viewpiece").getFigure() gd.boatPlots.figure = win.findChild(QObject, "viewboat").getFigure() gd.crewPlots.figure = win.findChild(QObject, "viewcrew").getFigure() engine.quit.connect(app.quit) sys.exit(app.exec_())
The text gets printed in the corresponding qml component :param string text: The text to append at the end of the current qml component text """ if text: previousText = self.log.property('text') outputText = '{}\n>>>{}'.format(previousText, text) self.log.setProperty('text', outputText) if __name__ == '__main__': app = QApplication(sys.argv) appEngine = QQmlApplicationEngine() context = appEngine.rootContext() appEngine.addImageProvider('viewerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('trackerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('recorderprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('calibrationprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation analysisImageProvider = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider", analysisImageProvider) analysisImageProvider2 = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider2", analysisImageProvider2) appEngine.load(QUrl('./qml/MouseTracker.qml')) win = appEngine.rootObjects()[0] if not DEBUG: logger = Logger(context, win, "log") sys.stdout = logger
:param string text: The text to append at the end of the current qml component text """ if text: previousText = self.log.property('text') outputText = '{}\n>>>{}'.format(previousText, text) self.log.setProperty('text', outputText) if __name__ == '__main__': app = QApplication(sys.argv) appEngine = QQmlApplicationEngine() context = appEngine.rootContext() appEngine.addImageProvider('viewerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('trackerprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('recorderprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation appEngine.addImageProvider('calibrationprovider', CvImageProvider()) # Hack to make qml believe provider is valid before its creation analysisImageProvider = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider", analysisImageProvider) analysisImageProvider2 = PyplotImageProvider(fig=None) appEngine.addImageProvider("analysisprovider2", analysisImageProvider2) appEngine.load(QUrl('./qml/MouseTracker.qml')) win = appEngine.rootObjects()[0] if not DEBUG: logger = Logger(context, win, "log") sys.stdout = logger
qmlRegisterType(Fishbone, "Bigeye", 1, 0, "Fishbone") qmlRegisterType(TestCaseModel, "Bigeye", 1, 0, "TestCaseModel") qmlRegisterType(KeyEventModel, "Bigeye", 1, 0, "KeyEventModel") qmlRegisterType(ProcessModel, "Bigeye", 1, 0, "ProcessModel") qmlRegisterType(Controller, "Bigeye", 1, 0, "Controller") qmlRegisterType(LiteController, "Bigeye", 1, 0, "LiteController") qmlRegisterType(AutomaticController, "Bigeye", 1, 0, "AutomaticController") qmlRegisterType(ReplayController, "Bigeye", 1, 0, "ReplayController") qmlRegisterType(Screenshot, "Bigeye", 1, 0, "Screenshot") qmlRegisterType(ScreenRecorder, "Bigeye", 1, 0, "ScreenRecorder") qmlRegisterType(Miscellany, "Bigeye", 1, 0, "Miscellany") engine = QQmlApplicationEngine() engine.addImageProvider('snapshot', SnapshotProvider()) engine.addImageProvider('video', VideoProvider()) bigeyeQml = "bigeye-lite.qml" if 'lite' in sys.argv else "bigeye.qml" if 'noqrc' in sys.argv: engine.load( QUrl.fromLocalFile( os.path.join(os.path.dirname(__file__), bigeyeQml))) else: import bigeye_rc engine.load(QUrl("qrc:/" + bigeyeQml)) sys.exit(app.exec_())
class ElectrumQmlApplication(QGuiApplication): _valid = True def __init__(self, args, config, daemon): super().__init__(args) self.logger = get_logger(__name__) ElectrumQmlApplication._daemon = daemon qmlRegisterType(QEWalletListModel, 'org.electrum', 1, 0, 'WalletListModel') qmlRegisterType(QEWallet, 'org.electrum', 1, 0, 'Wallet') qmlRegisterType(QEWalletDB, 'org.electrum', 1, 0, 'WalletDB') qmlRegisterType(QEBitcoin, 'org.electrum', 1, 0, 'Bitcoin') qmlRegisterType(QEQRParser, 'org.electrum', 1, 0, 'QRParser') qmlRegisterType(QEFX, 'org.electrum', 1, 0, 'FX') qmlRegisterType(QETxFinalizer, 'org.electrum', 1, 0, 'TxFinalizer') qmlRegisterType(QEInvoice, 'org.electrum', 1, 0, 'Invoice') qmlRegisterType(QEInvoiceParser, 'org.electrum', 1, 0, 'InvoiceParser') qmlRegisterType(QEUserEnteredPayment, 'org.electrum', 1, 0, 'UserEnteredPayment') qmlRegisterType(QEAddressDetails, 'org.electrum', 1, 0, 'AddressDetails') qmlRegisterType(QETxDetails, 'org.electrum', 1, 0, 'TxDetails') qmlRegisterType(QEChannelOpener, 'org.electrum', 1, 0, 'ChannelOpener') qmlRegisterType(QELnPaymentDetails, 'org.electrum', 1, 0, 'LnPaymentDetails') qmlRegisterType(QEChannelDetails, 'org.electrum', 1, 0, 'ChannelDetails') qmlRegisterType(QESwapHelper, 'org.electrum', 1, 0, 'SwapHelper') qmlRegisterUncreatableType(QEAmount, 'org.electrum', 1, 0, 'Amount', 'Amount can only be used as property') self.engine = QQmlApplicationEngine(parent=self) self.engine.addImportPath('./qml') screensize = self.primaryScreen().size() self.qr_ip = QEQRImageProvider( (7 / 8) * min(screensize.width(), screensize.height())) self.engine.addImageProvider('qrgen', self.qr_ip) # add a monospace font as we can't rely on device having one self.fixedFont = 'PT Mono' not_loaded = QFontDatabase.addApplicationFont( 'electrum/gui/qml/fonts/PTMono-Regular.ttf') < 0 not_loaded = QFontDatabase.addApplicationFont( 'electrum/gui/qml/fonts/PTMono-Bold.ttf') < 0 and not_loaded if not_loaded: self.logger.warning('Could not load font PT Mono') self.fixedFont = 'Monospace' # hope for the best self.context = self.engine.rootContext() self._qeconfig = QEConfig(config) self._qenetwork = QENetwork(daemon.network) self._qedaemon = QEDaemon(daemon) self._appController = QEAppController(self._qedaemon) self._maxAmount = QEAmount(is_max=True) self.context.setContextProperty('AppController', self._appController) self.context.setContextProperty('Config', self._qeconfig) self.context.setContextProperty('Network', self._qenetwork) self.context.setContextProperty('Daemon', self._qedaemon) self.context.setContextProperty('FixedFont', self.fixedFont) self.context.setContextProperty('MAX', self._maxAmount) self.context.setContextProperty( 'BUILD', { 'electrum_version': version.ELECTRUM_VERSION, 'apk_version': version.APK_VERSION, 'protocol_version': version.PROTOCOL_VERSION }) qInstallMessageHandler(self.message_handler) # get notified whether root QML document loads or not self.engine.objectCreated.connect(self.objectCreated) # slot is called after loading root QML. If object is None, it has failed. @pyqtSlot('QObject*', 'QUrl') def objectCreated(self, object, url): if object is None: self._valid = False self.engine.objectCreated.disconnect(self.objectCreated) def message_handler(self, line, funct, file): # filter out common harmless messages if re.search('file:///.*TypeError: Cannot read property.*null$', file): return self.logger.warning(file)
def main(): """The main entry point when used as a regular app It assumes a session is selected. When not, a dummy session None is used. The status line will tell that a real session has to be created or selected from the menu. """ global app # needed for making reports... matplotlib.use('Agg') app_Path = Path(__file__).parent.absolute() / '..' be = app_Path / 'QtQuickBackend' sys.path.append(str(be)) from backend_qtquick5 import FigureCanvasQTAggToolbar, MatplotlibIconProvider gd.config = startup() # always start without secondary session gd.config['Session2'] = None gd.globals = readGlobals() # sys_argv = sys.argv # sys_argv += ['--style', 'material'] app = QGuiApplication(sys.argv) # app.aboutToQuit.connect(shutdown) locale.setlocale(locale.LC_NUMERIC, "C"); # needed for filedialog app.setOrganizationName(gd.orgname) app.setOrganizationDomain(gd.orgdomain) app.setApplicationName(gd.appname) qmlRegisterType(FigureCanvasQTAggToolbar, "Backend", 1, 0, "FigureToolbar") imgProvider = MatplotlibIconProvider() # setup rootcontext to communicate with QML engine = QQmlApplicationEngine() engine.addImageProvider("mplIcons", imgProvider) gd.context = engine.rootContext() # Setup pieces gd.data_model = DataSensorsModel() gd.context.setContextProperty("sensorModel", gd.data_model) gd.mainPieces = FormPieces(data=gd.data_model) gd.context.setContextProperty("draw_mpl", gd.mainPieces) # model to create pieces gd.data_model2 = DataPiecesModel() gd.context.setContextProperty("makePiecesModel", gd.data_model2) # View piece gd.data_model3 = DataSensorsModel() gd.context.setContextProperty("sensorModel3", gd.data_model3) # model for secondary session gd.data_model4 = DataSensorsModel() gd.context.setContextProperty("sensorModel4", gd.data_model4) gd.mainView = FormView(data=gd.data_model3, data2=gd.data_model4) gd.context.setContextProperty("piece_mpl", gd.mainView) gd.data_model5 = DataPiecesModel() gd.context.setContextProperty("viewPiecesModel", gd.data_model5) # Boat gd.boattablemodel = BoatTableModel() gd.context.setContextProperty("boatTableModel", gd.boattablemodel) gd.boatPlots = BoatForm() gd.context.setContextProperty("boat_mpl", gd.boatPlots) # Crew gd.crewPlots = CrewForm() gd.context.setContextProperty("crew_mpl", gd.crewPlots) # Create rower tables and plots for potentially eight rowers for i in range(8): gd.rowertablemodel[i] = RowerTableModel(i) gd.context.setContextProperty("rowerTableModel"+str(i), gd.rowertablemodel[i]) gd.rowerPlots[i] = RowerForm(i) gd.context.setContextProperty("rower_mpl"+str(i), gd.rowerPlots[i]) # print(f'main: create the models rower {i} {gd.rowerPlots[i].update_figure}') gd.stretcherPlots[i] = StretcherForm(i) gd.context.setContextProperty("stretcher_mpl"+str(i), gd.stretcherPlots[i]) # Session info gd.data_model6 = DataBoatsModel() gd.context.setContextProperty("sInfoModel", gd.data_model6) gd.data_model6.load_boatsInfo() engine.load(str(app_Path / 'App' / 'qml' / 'main.qml')) gd.win = engine.rootObjects()[0] # set figures functions gd.mainPieces.figure = gd.win.findChild(QObject, "pieces").getFigure() gd.mainView.figure = gd.win.findChild(QObject, "viewpiece").getFigure() gd.boatPlots.figure = gd.win.findChild(QObject, "viewboat").getFigure() gd.crewPlots.figure = gd.win.findChild(QObject, "viewcrew").getFigure() sys.exit(app.exec_())