Thanks Patrick, I already have a Ui file from Designer. If I understand correctly, it looks like you're basically doing the reverse of what pysideuic does, that is to take a .py file and create al .ui and then do a loadUiType(). Your <customwidgets> section did prompt me to look at that section in my Ui file.
<customwidgets> <customwidget> <class>LayoutWidget</class> <extends>QWidget</extends> <header>pyqtgraph</header> <container>1</container> </customwidget> </customwidgets> I noticed that the Designer showed my ParameterTree as unused. (I'm not sure where that came from.I edited that file, then used Git to get it back to before I edited it, and Designer is not showing that message anymore) My ParameterTree is actually added in to my main to a Layout from another Ui file that does have ParameterTree as a promoted widget. (in parametertreeDialog.ui:) <customwidgets> <customwidget> <class>ParameterTree</class> <extends>QTreeWidget</extends> <header>pyqtgraph.parametertree</header> </customwidget> </customwidgets> This is part of a QDialog that I pop up when I want to change or view the parameters. I think I need to add <customwidget> <class>ParameterTree</class> <extends>QTreeWidget</extends> <header>pyqtgraph.parametertree</header> </customwidget> to my main Ui file even though the widget I do use pyqtgraph.Qt.loadUiType for the MainWindow like in the designerExample.py example, but I would like to use uic.loadUi(), loader.load() for my other Ui files. I'm trying to avoid creating *.py files using pysideuic. I'm going to try adding in ParameterTree as a promoted widget and see what happens. ---- Tim Williams On Sun, Jan 31, 2021 at 6:12 AM Patrick <[email protected]> wrote: > Hi, > > I'm not sure if this will help you, but I've been using PySide2 for one of > my latest projects and I remember having all sorts of issues getting .ui to > load, as the uic.loadUi() method I used to use for PyQt5 didn't directly > translate. It turns out PySide2 only fairly recently implemented the > PySide2.QtUiTools.loadUiType() method which was the only way I got it to > work, but it wasn't (isn't?) documented. I believe it should also work > using PyQt5.uic.loadUiType(), though haven't tried it. My UI classes look > something like: > > # ... > from PySide2 import QtCore, QtGui, QtWidgets > from PySide2.QtUiTools import loadUiType > # ... > > class DataPanel(QtWidgets.QWidget, loadUiType(__file__.split(".py")[0] + > ".ui")[0]): > > def __init__(self, parent=None): > super().__init__(parent) > self.setupUi(self) > # ... > > # ... > > The .ui file is created as normal (named the same as the python file but > with .ui extension), with the GraphicsLayoutWidget extended from > QGraphicsView as described in the pyqtgraph documentation. The relevant > section in the .ui XML then looks like: > > <customwidgets> > <customwidget> > <class>GraphicsLayoutWidget</class> > <extends>QGraphicsView</extends> > <header>mypackage.pyqtgraph</header> > </customwidget> > </customwidgets> > > where "mypackage" is my application package name, and I have pyqtgraph in > a directory under it as a subpackage. If you are using a system > installation of pyqtgraph, then the header field should just be "pyqtgraph". > > Hopefully that might give you some ideas anyway. > > Patrick > > > > On Saturday, 30 January 2021 at 11:13:33 am UTC+10:30 [email protected] > wrote: > >> As a follow-up, I'm using registerCustomWidget for the promoted widgets: >> >> loader = QUiLoader() >> loader.registerCustomWidget(pg.GraphicsLayoutWidget) >> loader.registerCustomWidget(pg.widgets.TreeWidget) >> loader.registerCustomWidget(pg.parametertree.ParameterTree) >> >> >> ---- >> Tim Williams >> >> >> On Fri, Jan 29, 2021 at 7:29 PM [email protected] <[email protected]> >> wrote: >> >>> HI, >>> >>> (Sorry about the formatting - not used to google groups posting.) >>> >>> I have an application I'm trying to get working with PySide2. I made >>> changes following the example designerExample.py . >>> <https://github.com/pyqtgraph/pyqtgraph/blob/master/examples/designerExample.py> >>> Everything seems to work fine with PyQt5, but when I try to use PySide >>> everytime I try to do a ParameterTree.setParmeters() I get an error like >>> this: >>> >>> File >>> "C:\Users\Tim\pyside2_env\lib\site-packages\pyqtgraph\parametertree\ParameterTree.py", >>> line 48, in setParameters >>> self.clear() >>> File >>> "C:\Users\Tim\pyside2_env\lib\site-packages\pyqtgraph\parametertree\ParameterTree.py", >>> line 85, in clear >>> self.invisibleRootItem().takeChildren() >>> File >>> "C:\Users\Tim\pyside2_env\lib\site-packages\pyqtgraph\widgets\TreeWidget.py", >>> line 390, in takeChildren >>> childs = self._real_item.takeChildren() >>> RuntimeError: Internal C++ object (PySide2.QtWidgets.QTreeWidgetItem) >>> already deleted. >>> >>> I'm using PySide2.QUiTools.QuiLoader().load to load my UI file for >>> PySide2, and >>> uic.loadUI for PyQt5. >>> >>> with importlib.resources.path('nvfieldcap.resources.ui', >>> 'paramtreeDialog.ui') as uifilename: >>> if 'PySide2' in sys.modules: >>> self.dialog = loader.load(uifilename.as_posix()) >>> if 'PyQt5' in sys.modules: >>> self.dialog = QtWidgets.QDialog() >>> uic.loadUi(uifilename.as_posix(), self.dialog) >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "pyqtgraph" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/pyqtgraph/uv2uyQCu9MM/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/pyqtgraph/f04abdf3-068a-41c4-a993-6076713ca61an%40googlegroups.com >>> <https://groups.google.com/d/msgid/pyqtgraph/f04abdf3-068a-41c4-a993-6076713ca61an%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "pyqtgraph" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/pyqtgraph/uv2uyQCu9MM/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pyqtgraph/106f2150-1724-4402-8e29-bd3cd30bd0fbn%40googlegroups.com > <https://groups.google.com/d/msgid/pyqtgraph/106f2150-1724-4402-8e29-bd3cd30bd0fbn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/CAO39LaTbFJ5H6Tf%3D4BDRVyEKKxFF%2B-9hWM0qmQSkuEz_7-_%3DgA%40mail.gmail.com.
