On pyside2 5.14.0-5.14.2.1 there were pyuic issues, would recommend going
to 5.15.0+ or 5.14.2.2.

On Mon, Feb 1, 2021 at 08:32 [email protected] <[email protected]> wrote:

> pyqtgraph issue #1102 <https://github.com/pyqtgraph/pyqtgraph/issues/1102>
>
> On Monday, February 1, 2021 at 11:28:10 AM UTC-5 [email protected] wrote:
>
>> I'm starting to think my problem is with the version of PySide2 on my
>> conda environment. I went to compare pyqtgraph.Qt.loadUiType with
>> PySide2.QtUiTools.loadUiType. It's not there:
>>
>> from PySide2.QtUiTools import loadUiType
>> Traceback (most recent call last):
>>   File "C:\Program Files\JetBrains\PyCharm Community Edition
>> 2020.1\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py",
>> line 3, in Exec
>>     exec(exp, global_vars, local_vars)
>>   File "<input>", line 1, in <module>
>> ImportError: cannot import name 'loadUiType' from 'PySide2.QtUiTools'
>> (D:\anaconda3\envs\fieldcapenv_pyside\lib\site-packages\PySide2\QtUiTools.cp37-win_amd64.pyd)
>>
>> PySide2.__version__
>> '5.13.2'
>>
>> I need to be at 5.14.
>> On Monday, February 1, 2021 at 9:07:27 AM UTC-5 [email protected] wrote:
>>
>>> Patrick,
>>>
>>> (Commenting embedded in your reply)
>>>
>>> On Sunday, January 31, 2021 at 8:31:17 PM UTC-5 Patrick wrote:
>>>
>>>> It could be that with this code:
>>>>
>>>> Template, BaseClass = pg.Qt.loadUiType(uifilename.as_posix())
>>>> self.FileNamingWidget = Template()
>>>> widget = BaseClass()
>>>> self.FileNamingWidget.setupUi(widget)
>>>>
>>>> then "self.FileNamingWidget" and "widget" are different objects, while
>>>> defining a new class with:
>>>>
>>>> class DataPanel(QtWidgets.QWidget, loadUiType(__file__.split(".py")[0]
>>>> + ".ui")[0]):
>>>>
>>>> then an instance of DataPanel is both a subclass of QWidget *and*
>>>> whatever loadUiType()[0] returns through multiple inheritance. The type
>>>> returned by the loadUiType(...)[0] magic lets the QWidget use the setupUi()
>>>> method as if it were "derived from user interface descriptions created
>>>> using uic" as described in the QWidget.setupUi() method documentation.
>>>>
>>>>
>>> The __file__.split(".py")[0] + ".ui")[0]) is what threw me on my
>>> misunderstanding on using pysideuic.  Your 
>>> loadUiType(__file__.split(".py")[0]
>>> + ".ui")[0] is basically my Template, and I think your QtWidgets.QWidget
>>> is my BaseClass
>>>
>>> I was trying to  follow the examples on loadUiType() that returns a form
>>> and base class  and trying also to use pyqtgraph's Qt.py to handle
>>> supporting PyQt5 and PySide2. My MainWIndow gets created fine following the
>>> designerExample.py
>>> <https://github.com/pyqtgraph/pyqtgraph/blob/master/examples/designerExample.py>
>>> :
>>>
>>> with importlib.resources.path('nvfieldcap.resources.ui', 'NVFieldCap.ui')
>>> as uiFile:
>>> WindowTemplate, TemplateBaseClass = pg.Qt.loadUiType(uiFile.as_posix())
>>>
>>> class MainWindow(TemplateBaseClass):
>>>
>>>  def __init__(self, config=None):
>>> TemplateBaseClass.__init__(self)
>>> # Create the main window
>>> self.ui = WindowTemplate()
>>> self.ui.setupUi(self)
>>>
>>>  (uiFileName = 'FileNamingWidget.ui' )
>>> uiFileName = self.get_uiFileName(config)
>>> with importlib.resources.path('nvfieldcap.resources.ui', uiFileName) as
>>> uifilename:
>>> if 'PySide2' in sys.modules:
>>>     Template, BaseClass = pg.Qt.loadUiType(uifilename.as_posix())
>>>
>>>  Template and BaseClass are both classes
>>> Template,BaseClass
>>> (<class 'Ui_Filename_Folder_Widget'>, <class
>>> 'PySide2.QtWidgets.QTabWidget'>)
>>> Looking at your code again though, I think I should be doing something
>>> like
>>>
>>> Template, BaseClass =
>>> QtWidgets.QTabWidget.loadUiType(uifilename.as_posix())
>>>
>>> My "FileNamingWidget.ui" file starts with:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <ui version="4.0">
>>>  <class>Filename_Folder_Widget</class>
>>>  <widget class="QTabWidget" name="Filename_Folder_Widget">
>>>
>>> *Ok, so QTabWidget doesn't have a loadUiType().  Scratch that.* I'm
>>> reading this uifile inside my MainWIndow.__init__ , so I don't know what my
>>> class is yet. (Well, I guess I do know it's a QTabWidget.)
>>>
>>> And no, I don't use the command line uic/pysideuic tools to generate
>>>> python files from the .ui, I just build them in QtDesigner and use the
>>>> loadUiType(...) method. If I have a subwidget which is inserted
>>>> programmatically into a larger form, then I'll have a small class
>>>> definition though. So something like this:
>>>>
>>>> from PySide2 import QtCore, QtGui, QtWidgets
>>>> from PySide2.QtUiTools import loadUiType
>>>>
>>>> class MainPanel(QtWidgets.QWidget, loadUiType("mainpanel.ui")[0]):
>>>>     def __init__(self, parent=None):
>>>>     super().__init__(parent)
>>>>     self.setupUi(self)
>>>>     # ...
>>>>     self.subPanel = SubPanel()
>>>>     self.layout().addItem(self.subPanel)
>>>>     # ...
>>>>     # dynamic ui setup for SubPanelWidget, connect signals etc
>>>> # ...
>>>> class SubPanel(QtWidgets.QFrame, loadUiType("subpanel.ui")[0]):
>>>>     def __init__(self, parent=None):
>>>>     super().__init__(parent)
>>>>     self.setupUi(self)
>>>>     # ...
>>>>     # other boilerplate ui setup for SubPanelWidget
>>>>
>>>> It's not as nice as being able to use the uic.load() method, but this
>>>> was the first/only way I got dynamic ui loading with PySide2, so stopped
>>>> messing around trying to figure out why load() was giving so much trouble.
>>>>
>>>>
>>> I'll look over this more and see if I can follow your pattern. Thanks.
>>>
>>>
>>>> (snip)
>>>>>>>>>
>>>>>>>>> TIm
>>>
>>>
>>>
>> --
> 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/2db65699-7066-4807-985e-d1bdec077998n%40googlegroups.com
> <https://groups.google.com/d/msgid/pyqtgraph/2db65699-7066-4807-985e-d1bdec077998n%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/CA%2BnduTEmc5cMb062RhgW%2BEud2%2B6Auk0Q-GSe31yDJ94j%2Bg60qw%40mail.gmail.com.

Reply via email to