import template files using importlib

this lets us support the various bindings w/o having to add binding
specific code.

it breaks PyQt4 support since PyQt4 template files are suffixed as
"_pyqt" rather than "_pyqt4"
This commit is contained in:
KIU Shueng Chuan 2021-01-14 11:15:34 +08:00
parent 5732ca8213
commit 966ae7a3df
11 changed files with 42 additions and 126 deletions

View File

@ -12,16 +12,9 @@ path = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, path) sys.path.insert(0, path)
app = pg.mkQApp() app = pg.mkQApp()
if QT_LIB == 'PySide': import importlib
from exampleLoaderTemplate_pyside import Ui_Form ui_template = importlib.import_module(
elif QT_LIB == 'PySide2': f'exampleLoaderTemplate_{QT_LIB.lower()}')
from exampleLoaderTemplate_pyside2 import Ui_Form
elif QT_LIB == 'PySide6':
from exampleLoaderTemplate_pyside6 import Ui_Form
elif QT_LIB == 'PyQt5':
from exampleLoaderTemplate_pyqt5 import Ui_Form
else:
from exampleLoaderTemplate_pyqt import Ui_Form
examples = OrderedDict([ examples = OrderedDict([
('Command-line usage', 'CLIexample.py'), ('Command-line usage', 'CLIexample.py'),
@ -352,7 +345,7 @@ class PythonHighlighter(QSyntaxHighlighter):
class ExampleLoader(QtGui.QMainWindow): class ExampleLoader(QtGui.QMainWindow):
def __init__(self): def __init__(self):
QtGui.QMainWindow.__init__(self) QtGui.QMainWindow.__init__(self)
self.ui = Ui_Form() self.ui = ui_template.Ui_Form()
self.cw = QtGui.QWidget() self.cw = QtGui.QWidget()
self.setCentralWidget(self.cw) self.setCentralWidget(self.cw)
self.ui.setupUi(self.cw) self.ui.setupUi(self.cw)

View File

@ -20,20 +20,13 @@ from pyqtgraph.ptime import time
app = QtGui.QApplication([]) app = QtGui.QApplication([])
#mw = QtGui.QMainWindow() #mw = QtGui.QMainWindow()
#mw.resize(800,800) #mw.resize(800,800)
if QT_LIB == 'PySide': import importlib
from ScatterPlotSpeedTestTemplate_pyside import Ui_Form ui_template = importlib.import_module(
elif QT_LIB == 'PySide2': f'ScatterPlotSpeedTestTemplate_{QT_LIB.lower()}')
from ScatterPlotSpeedTestTemplate_pyside2 import Ui_Form
elif QT_LIB == 'PySide6':
from ScatterPlotSpeedTestTemplate_pyside6 import Ui_Form
elif QT_LIB == 'PyQt5':
from ScatterPlotSpeedTestTemplate_pyqt5 import Ui_Form
else:
from ScatterPlotSpeedTestTemplate_pyqt import Ui_Form
win = QtGui.QWidget() win = QtGui.QWidget()
win.setWindowTitle('pyqtgraph example: ScatterPlotSpeedTest') win.setWindowTitle('pyqtgraph example: ScatterPlotSpeedTest')
ui = Ui_Form() ui = ui_template.Ui_Form()
ui.setupUi(win) ui.setupUi(win)
win.show() win.show()

View File

@ -15,16 +15,8 @@ import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
import pyqtgraph.ptime as ptime import pyqtgraph.ptime as ptime
if QT_LIB == 'PySide': import importlib
import VideoTemplate_pyside as VideoTemplate ui_template = importlib.import_module(f'VideoTemplate_{QT_LIB.lower()}')
elif QT_LIB == 'PySide2':
import VideoTemplate_pyside2 as VideoTemplate
elif QT_LIB == 'PySide6':
import VideoTemplate_pyside6 as VideoTemplate
elif QT_LIB == 'PyQt5':
import VideoTemplate_pyqt5 as VideoTemplate
else:
import VideoTemplate_pyqt as VideoTemplate
#QtGui.QApplication.setGraphicsSystem('raster') #QtGui.QApplication.setGraphicsSystem('raster')
@ -32,7 +24,7 @@ app = QtGui.QApplication([])
win = QtGui.QMainWindow() win = QtGui.QMainWindow()
win.setWindowTitle('pyqtgraph example: VideoSpeedTest') win.setWindowTitle('pyqtgraph example: VideoSpeedTest')
ui = VideoTemplate.Ui_MainWindow() ui = ui_template.Ui_MainWindow()
ui.setupUi(win) ui.setupUi(win)
win.show() win.show()

View File

@ -4,16 +4,9 @@ from .. import functions as fn
from ..graphicsItems.ViewBox import ViewBox from ..graphicsItems.ViewBox import ViewBox
from ..graphicsItems.PlotItem import PlotItem from ..graphicsItems.PlotItem import PlotItem
if QT_LIB == 'PySide': import importlib
from . import exportDialogTemplate_pyside as exportDialogTemplate ui_template = importlib.import_module(
elif QT_LIB == 'PySide2': f'.exportDialogTemplate_{QT_LIB.lower()}', package=__package__)
from . import exportDialogTemplate_pyside2 as exportDialogTemplate
elif QT_LIB == 'PySide6':
from . import exportDialogTemplate_pyside6 as exportDialogTemplate
elif QT_LIB == 'PyQt5':
from . import exportDialogTemplate_pyqt5 as exportDialogTemplate
else:
from . import exportDialogTemplate_pyqt as exportDialogTemplate
class ExportDialog(QtGui.QWidget): class ExportDialog(QtGui.QWidget):
@ -30,7 +23,7 @@ class ExportDialog(QtGui.QWidget):
self.selectBox.hide() self.selectBox.hide()
self.scene.addItem(self.selectBox) self.scene.addItem(self.selectBox)
self.ui = exportDialogTemplate.Ui_Form() self.ui = ui_template.Ui_Form()
self.ui.setupUi(self) self.ui.setupUi(self)
self.ui.closeBtn.clicked.connect(self.close) self.ui.closeBtn.clicked.connect(self.close)

View File

@ -5,16 +5,9 @@ from ..graphicsItems.ROI import ROI
from ..graphicsItems.ViewBox import ViewBox from ..graphicsItems.ViewBox import ViewBox
from ..graphicsItems.GridItem import GridItem from ..graphicsItems.GridItem import GridItem
if QT_LIB == 'PySide': import importlib
from .CanvasTemplate_pyside import * ui_template = importlib.import_module(
elif QT_LIB == 'PyQt4': f'.CanvasTemplate_{QT_LIB.lower()}', package=__package__)
from .CanvasTemplate_pyqt import *
elif QT_LIB == 'PySide2':
from .CanvasTemplate_pyside2 import *
elif QT_LIB == 'PySide6':
from .CanvasTemplate_pyside6 import *
elif QT_LIB == 'PyQt5':
from .CanvasTemplate_pyqt5 import *
import numpy as np import numpy as np
from .. import debug from .. import debug
@ -32,7 +25,7 @@ class Canvas(QtGui.QWidget):
def __init__(self, parent=None, allowTransforms=True, hideCtrl=False, name=None): def __init__(self, parent=None, allowTransforms=True, hideCtrl=False, name=None):
QtGui.QWidget.__init__(self, parent) QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Form() self.ui = ui_template.Ui_Form()
self.ui.setupUi(self) self.ui.setupUi(self)
self.view = ViewBox() self.view = ViewBox()
self.ui.view.setCentralItem(self.view) self.ui.view.setCentralItem(self.view)

View File

@ -3,16 +3,9 @@ import numpy as np
from ..Qt import QtGui, QtCore, QtSvg, QT_LIB from ..Qt import QtGui, QtCore, QtSvg, QT_LIB
from ..graphicsItems.ROI import ROI from ..graphicsItems.ROI import ROI
from .. import SRTTransform, ItemGroup from .. import SRTTransform, ItemGroup
if QT_LIB == 'PySide': import importlib
from . import TransformGuiTemplate_pyside as TransformGuiTemplate ui_template = importlib.import_module(
elif QT_LIB == 'PyQt4': f'.TransformGuiTemplate_{QT_LIB.lower()}', package=__package__)
from . import TransformGuiTemplate_pyqt as TransformGuiTemplate
elif QT_LIB == 'PySide2':
from . import TransformGuiTemplate_pyside2 as TransformGuiTemplate
elif QT_LIB == 'PySide6':
from . import TransformGuiTemplate_pyside6 as TransformGuiTemplate
elif QT_LIB == 'PyQt5':
from . import TransformGuiTemplate_pyqt5 as TransformGuiTemplate
from .. import debug from .. import debug
@ -80,7 +73,7 @@ class CanvasItem(QtCore.QObject):
self.pasteBtn = QtGui.QPushButton('Paste') self.pasteBtn = QtGui.QPushButton('Paste')
self.transformWidget = QtGui.QWidget() self.transformWidget = QtGui.QWidget()
self.transformGui = TransformGuiTemplate.Ui_Form() self.transformGui = ui_template.Ui_Form()
self.transformGui.setupUi(self.transformWidget) self.transformGui.setupUi(self.transformWidget)
self.layout.addWidget(self.transformWidget, 3, 0, 1, 2) self.layout.addWidget(self.transformWidget, 3, 0, 1, 2)
self.transformGui.mirrorImageBtn.clicked.connect(self.mirrorY) self.transformGui.mirrorImageBtn.clicked.connect(self.mirrorY)

View File

@ -7,16 +7,9 @@ from ..python2_3 import basestring
from .. import exceptionHandling as exceptionHandling from .. import exceptionHandling as exceptionHandling
from .. import getConfigOption from .. import getConfigOption
from ..functions import SignalBlock from ..functions import SignalBlock
if QT_LIB == 'PySide': import importlib
from . import template_pyside as template ui_template = importlib.import_module(
elif QT_LIB == 'PySide2': f'.template_{QT_LIB.lower()}', package=__package__)
from . import template_pyside2 as template
elif QT_LIB == 'PySide6':
from . import template_pyside6 as template
elif QT_LIB == 'PyQt5':
from . import template_pyqt5 as template
else:
from . import template_pyqt as template
class ConsoleWidget(QtGui.QWidget): class ConsoleWidget(QtGui.QWidget):
@ -62,7 +55,7 @@ class ConsoleWidget(QtGui.QWidget):
self.inCmd = False self.inCmd = False
self.frames = [] # stack frames to access when an item in the stack list is selected self.frames = [] # stack frames to access when an item in the stack list is selected
self.ui = template.Ui_Form() self.ui = ui_template.Ui_Form()
self.ui.setupUi(self) self.ui.setupUi(self)
self.output = self.ui.output self.output = self.ui.output
self.input = self.ui.input self.input = self.ui.input

View File

@ -5,22 +5,9 @@ from ..pgcollections import OrderedDict
from ..widgets.TreeWidget import * from ..widgets.TreeWidget import *
from .. import FileDialog, DataTreeWidget from .. import FileDialog, DataTreeWidget
## pyside and pyqt use incompatible ui files. import importlib
if QT_LIB == 'PySide': FlowchartCtrlTemplate = importlib.import_module(
from . import FlowchartTemplate_pyside as FlowchartTemplate f'.FlowchartCtrlTemplate_{QT_LIB.lower()}', package=__package__)
from . import FlowchartCtrlTemplate_pyside as FlowchartCtrlTemplate
elif QT_LIB == 'PySide2':
from . import FlowchartTemplate_pyside2 as FlowchartTemplate
from . import FlowchartCtrlTemplate_pyside2 as FlowchartCtrlTemplate
elif QT_LIB == 'PySide6':
from . import FlowchartTemplate_pyside6 as FlowchartTemplate
from . import FlowchartCtrlTemplate_pyside6 as FlowchartCtrlTemplate
elif QT_LIB == 'PyQt5':
from . import FlowchartTemplate_pyqt5 as FlowchartTemplate
from . import FlowchartCtrlTemplate_pyqt5 as FlowchartCtrlTemplate
else:
from . import FlowchartTemplate_pyqt as FlowchartTemplate
from . import FlowchartCtrlTemplate_pyqt as FlowchartCtrlTemplate
from .Terminal import Terminal from .Terminal import Terminal
from numpy import ndarray from numpy import ndarray

View File

@ -19,16 +19,9 @@ from .. InfiniteLine import InfiniteLine
from ...WidgetGroup import WidgetGroup from ...WidgetGroup import WidgetGroup
from ...python2_3 import basestring from ...python2_3 import basestring
if QT_LIB == 'PyQt4': import importlib
from .plotConfigTemplate_pyqt import * ui_template = importlib.import_module(
elif QT_LIB == 'PySide': f'.plotConfigTemplate_{QT_LIB.lower()}', package=__package__)
from .plotConfigTemplate_pyside import *
elif QT_LIB == 'PyQt5':
from .plotConfigTemplate_pyqt5 import *
elif QT_LIB == 'PySide2':
from .plotConfigTemplate_pyside2 import *
elif QT_LIB == 'PySide6':
from .plotConfigTemplate_pyside6 import *
__all__ = ['PlotItem'] __all__ = ['PlotItem']
@ -191,7 +184,7 @@ class PlotItem(GraphicsWidget):
### Set up context menu ### Set up context menu
w = QtGui.QWidget() w = QtGui.QWidget()
self.ctrl = c = Ui_Form() self.ctrl = c = ui_template.Ui_Form()
c.setupUi(w) c.setupUi(w)
dv = QtGui.QDoubleValidator(self) dv = QtGui.QDoubleValidator(self)

View File

@ -3,16 +3,9 @@ from ...Qt import QtCore, QtGui, QT_LIB
from ...python2_3 import asUnicode from ...python2_3 import asUnicode
from ...WidgetGroup import WidgetGroup from ...WidgetGroup import WidgetGroup
if QT_LIB == 'PyQt4': import importlib
from .axisCtrlTemplate_pyqt import Ui_Form as AxisCtrlTemplate ui_template = importlib.import_module(
elif QT_LIB == 'PySide': f'.axisCtrlTemplate_{QT_LIB.lower()}', package=__package__)
from .axisCtrlTemplate_pyside import Ui_Form as AxisCtrlTemplate
elif QT_LIB == 'PyQt5':
from .axisCtrlTemplate_pyqt5 import Ui_Form as AxisCtrlTemplate
elif QT_LIB == 'PySide2':
from .axisCtrlTemplate_pyside2 import Ui_Form as AxisCtrlTemplate
elif QT_LIB == 'PySide6':
from .axisCtrlTemplate_pyside6 import Ui_Form as AxisCtrlTemplate
import weakref import weakref
@ -37,7 +30,7 @@ class ViewBoxMenu(QtGui.QMenu):
m = QtGui.QMenu() m = QtGui.QMenu()
m.setTitle("%s Axis" % axis) m.setTitle("%s Axis" % axis)
w = QtGui.QWidget() w = QtGui.QWidget()
ui = AxisCtrlTemplate() ui = ui_template.Ui_Form()
ui.setupUi(w) ui.setupUi(w)
a = QtGui.QWidgetAction(self) a = QtGui.QWidgetAction(self)
a.setDefaultWidget(w) a.setDefaultWidget(w)

View File

@ -16,16 +16,9 @@ import os, sys
import numpy as np import numpy as np
from ..Qt import QtCore, QtGui, QT_LIB from ..Qt import QtCore, QtGui, QT_LIB
if QT_LIB == 'PySide': import importlib
from .ImageViewTemplate_pyside import * ui_template = importlib.import_module(
elif QT_LIB == 'PySide2': f'.ImageViewTemplate_{QT_LIB.lower()}', package=__package__)
from .ImageViewTemplate_pyside2 import *
elif QT_LIB == 'PySide6':
from .ImageViewTemplate_pyside6 import *
elif QT_LIB == 'PyQt5':
from .ImageViewTemplate_pyqt5 import *
else:
from .ImageViewTemplate_pyqt import *
from ..graphicsItems.ImageItem import * from ..graphicsItems.ImageItem import *
from ..graphicsItems.ROI import * from ..graphicsItems.ROI import *
@ -128,7 +121,7 @@ class ImageView(QtGui.QWidget):
self.image = None self.image = None
self.axes = {} self.axes = {}
self.imageDisp = None self.imageDisp = None
self.ui = Ui_Form() self.ui = ui_template.Ui_Form()
self.ui.setupUi(self) self.ui.setupUi(self)
self.scene = self.ui.graphicsView.scene() self.scene = self.ui.graphicsView.scene()
self.ui.histogram.setLevelMode(levelMode) self.ui.histogram.setLevelMode(levelMode)