Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. How to add plugins to PySide6-designer?
Forum Updated to NodeBB v4.3 + New Features

How to add plugins to PySide6-designer?

Scheduled Pinned Locked Moved Solved Qt for Python
15 Posts 5 Posters 3.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Tim Tu

    @JonB Thanks, that is my wrong.

    But that maybe pyside's bug. I have checked the code, and I found it tried to get the path of pyside6 by pyside_dir = Path(ref_mod.__file__).resolve().parent . But actually it just returns None.

    >>> import PySide6
    >>> print(PySide6.__file__)
    None
    

    I can solve this problem by creating __init__.py at /site-packages/PySide6/. Should I report this problem?

    JonBJ Online
    JonBJ Online
    JonB
    wrote on last edited by
    #6

    @Tim-Tu
    I only have PySide2:

    >>> import PySide2
    >>> print(PySide2.__file__)
    /home/jon/.local/lib/python3.10/site-packages/PySide2/__init__.py
    

    I don't know why your PySide6 does not have this, or what you are supposed to do about it.

    1 Reply Last reply
    0
    • T Offline
      T Offline
      Tim Tu
      wrote on last edited by
      #7

      Unluckily, it still can't work.

       ❯ ll
      total 28K
      -rw-rw-r-- 1 tim tim  435 Feb 16 09:24 main.py
      -rw-rw-r-- 1 tim tim  446 Feb 16 09:24 registertictactoe.py
      -rw-rw-r-- 1 tim tim  119 Feb 16 09:24 taskmenuextension.pyproject
      -rw-rw-r-- 1 tim tim 4.9K Feb 16 09:24 tictactoe.py
      -rw-rw-r-- 1 tim tim 1.7K Feb 16 09:24 tictactoeplugin.py
      -rw-rw-r-- 1 tim tim 2.3K Feb 16 09:24 tictactoetaskmenu.py
      ❯ export PYSIDE_DESIGNER_PLUGINS="."
      ❯ pyside6-designer
      ERROR: ld.so: object 'libpython3.10.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
      

      cd139b9a-d2aa-43f9-992c-f7edfba38b3d-image.png

      JonBJ 1 Reply Last reply
      0
      • T Tim Tu

        Unluckily, it still can't work.

         ❯ ll
        total 28K
        -rw-rw-r-- 1 tim tim  435 Feb 16 09:24 main.py
        -rw-rw-r-- 1 tim tim  446 Feb 16 09:24 registertictactoe.py
        -rw-rw-r-- 1 tim tim  119 Feb 16 09:24 taskmenuextension.pyproject
        -rw-rw-r-- 1 tim tim 4.9K Feb 16 09:24 tictactoe.py
        -rw-rw-r-- 1 tim tim 1.7K Feb 16 09:24 tictactoeplugin.py
        -rw-rw-r-- 1 tim tim 2.3K Feb 16 09:24 tictactoetaskmenu.py
        ❯ export PYSIDE_DESIGNER_PLUGINS="."
        ❯ pyside6-designer
        ERROR: ld.so: object 'libpython3.10.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
        

        cd139b9a-d2aa-43f9-992c-f7edfba38b3d-image.png

        JonBJ Online
        JonBJ Online
        JonB
        wrote on last edited by
        #8

        @Tim-Tu
        Dunno. Verify locate libpython3.10.so returns some matches (mine returns a dozen). Whether the error message means it cannot find it or it can but cannot load it (check output from ldd) I do not know. Nor whether ignored means it doesn't matter. I'm afraid I don't use this stuff.

        1 Reply Last reply
        0
        • T Offline
          T Offline
          Tim Tu
          wrote on last edited by Tim Tu
          #9

          It finally work on python 3.11.
          1baa4d26-24dd-4aed-abda-9d065590648b-image.png

          1 Reply Last reply
          0
          • T Offline
            T Offline
            Tim Tu
            wrote on last edited by
            #10

            It still doesn't work on my code, here is my register_widgets.py:

            from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
            import os, sys
            from pathlib import Path
            import qfluentwidgets
            
            plugins_dir = os.path.dirname(qfluentwidgets.__file__) + '/plugins'
            sys.path.append(plugins_dir)
            print(plugins_dir)
            # plugins = []
            
            def get_modules(py):
                # I don't know why, but they are nessary
                from PySide6.QtDesigner import QDesignerCustomWidgetInterface
                from inspect import getmembers
            
                modules = []
                for name, obj in getmembers(py):
                # for name, obj in py.__dict__.items():
                    print(f"Loading {name}")
                    if isinstance(obj, QDesignerCustomWidgetInterface):
                        modules.append(obj)
                return modules
            
            for filename in os.listdir(plugins_dir):
                if filename.endswith('.py') and not filename.startswith('_'):
                    # plugins += get_modules(__import__(file_path))
                    py = __import__(f"qfluentwidgets.plugins.{filename}".replace('.py', ''))
                    for plug in get_modules(py):
                        QPyDesignerCustomWidgetCollection.addCustomWidget(plug)
            

            23e2e6d4-9b65-4be7-941a-0133c3bd73c3-image.png

            1 Reply Last reply
            0
            • T Offline
              T Offline
              Tim Tu
              wrote on last edited by
              #11

              I finally made it work!
              28952710-154a-4732-9140-4a7dd3f5f1e5-image.png
              Thank everyone for your help.

              H 1 Reply Last reply
              0
              • T Tim Tu has marked this topic as solved on
              • T Tim Tu

                I finally made it work!
                28952710-154a-4732-9140-4a7dd3f5f1e5-image.png
                Thank everyone for your help.

                H Offline
                H Offline
                Hassaan11
                wrote on last edited by
                #12

                @Tim-Tu
                Hey!
                Sorry for replying to a closed topic, but would be so kind as to provide me with the code you used to register the plugin? I am also trying to get qfluentwidgets to work on my designer but having some problems, this would save a lot of trouble!
                Thanks

                T 1 Reply Last reply
                0
                • H Hassaan11

                  @Tim-Tu
                  Hey!
                  Sorry for replying to a closed topic, but would be so kind as to provide me with the code you used to register the plugin? I am also trying to get qfluentwidgets to work on my designer but having some problems, this would save a lot of trouble!
                  Thanks

                  T Offline
                  T Offline
                  Tim Tu
                  wrote on last edited by
                  #13

                  @Hassaan11 Hi, I'm sorry for my late reply. Should you still require the information, kindly visit my repository.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    AndreBam
                    wrote on last edited by
                    #14

                    @JonB Just following the tutorial here https://doc.qt.io/qtforpython-6/examples/example_designer_taskmenuextension.html#task-menu-extension-example. I'm wondering if it's possible to have the required files in different directories.

                    JonBJ 1 Reply Last reply
                    0
                    • A AndreBam

                      @JonB Just following the tutorial here https://doc.qt.io/qtforpython-6/examples/example_designer_taskmenuextension.html#task-menu-extension-example. I'm wondering if it's possible to have the required files in different directories.

                      JonBJ Online
                      JonBJ Online
                      JonB
                      wrote on last edited by
                      #15

                      @AndreBam I don't use designer plugins, let alone PySide/PySide6, so I'm not the person to ask.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved