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. Merge two pieces of code
Forum Updated to NodeBB v4.3 + New Features

Merge two pieces of code

Scheduled Pinned Locked Moved Unsolved Qt for Python
102 Posts 5 Posters 29.5k Views 2 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.
  • mrjjM mrjj

    @john_hobbyist
    Hi
    Nope, it don't work like that. the mouse function overrides that Qt must call and
    they cant be in another function.

    under
    class MyMplCanvas(mpl_qt.FigureCanvasQTAgg):
    def mousePressEvent(self, event):
    print("PRESS")

    and see if it types "PRESS" if you click on the "image"

    If it won't compile it means mpl_qt.FigureCanvasQTAgg is not a QWidget and
    its not really possible.

    J Offline
    J Offline
    john_hobbyist
    wrote on last edited by john_hobbyist
    #24

    @mrjj I have just tried it. It prints "PRESS"!

    But again if I move the rubberband methods under MyMplCanvas and these:

        super().__init__(parent)
    
        self.rubberBand = None
        self.origin = None
    

    again the initial error...!!!

    mrjjM 1 Reply Last reply
    0
    • mrjjM mrjj

      @john_hobbyist
      Hi
      Nope, it don't work like that. the mouse function overrides that Qt must call and
      they cant be in another function.

      under
      class MyMplCanvas(mpl_qt.FigureCanvasQTAgg):
      def mousePressEvent(self, event):
      print("PRESS")

      and see if it types "PRESS" if you click on the "image"

      If it won't compile it means mpl_qt.FigureCanvasQTAgg is not a QWidget and
      its not really possible.

      J Offline
      J Offline
      john_hobbyist
      wrote on last edited by
      #25
      This post is deleted!
      1 Reply Last reply
      0
      • J john_hobbyist

        @mrjj I have just tried it. It prints "PRESS"!

        But again if I move the rubberband methods under MyMplCanvas and these:

            super().__init__(parent)
        
            self.rubberBand = None
            self.origin = None
        

        again the initial error...!!!

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #26

        @john_hobbyist

        Ok that's good news so it is a QWidget. Then there is hope :)
        It reacted to the mousepress!

        What error ?

        the set_canvas one ?

        J 1 Reply Last reply
        1
        • mrjjM mrjj

          @john_hobbyist

          Ok that's good news so it is a QWidget. Then there is hope :)
          It reacted to the mousepress!

          What error ?

          the set_canvas one ?

          J Offline
          J Offline
          john_hobbyist
          wrote on last edited by john_hobbyist
          #27

          @mrjj :-)

          Traceback (most recent call last):
            File "code.py", line 653, in <module>
              window = OrthoView()
            File "code.py", line 279, in __init__
              self.plotCanvas = MyMplCanvas(self)
            File "code.py", line 109, in __init__
              super().__init__(parent)
            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5agg.py", line 21, in __init__
              super().__init__(figure=figure)
            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5.py", line 214, in __init__
              super().__init__(figure=figure)
            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 1722, in __init__
              figure.set_canvas(self)
          AttributeError: 'OrthoView' object has no attribute 'set_canvas'
          
          mrjjM 1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #28

            You do realize that your OrthoView does not have such a method ? That its base class (QMainWindow) does not either ?

            Therefore since you are taking your code from another project, you might want to check the code of said project for that method.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • J john_hobbyist

              @mrjj :-)

              Traceback (most recent call last):
                File "code.py", line 653, in <module>
                  window = OrthoView()
                File "code.py", line 279, in __init__
                  self.plotCanvas = MyMplCanvas(self)
                File "code.py", line 109, in __init__
                  super().__init__(parent)
                File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5agg.py", line 21, in __init__
                  super().__init__(figure=figure)
                File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5.py", line 214, in __init__
                  super().__init__(figure=figure)
                File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 1722, in __init__
                  figure.set_canvas(self)
              AttributeError: 'OrthoView' object has no attribute 'set_canvas'
              
              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #29

              @john_hobbyist said in Merge two pieces of code:

              set_canvas

              But this is not related to the RubberBand thing. ?

              if i look in the ORG project
              https://github.com/kklmn/OrthoView/blob/master/OrthoView.py

              there is no such method?
              So did you add it or where does it come from ?

              1 Reply Last reply
              1
              • J Offline
                J Offline
                john_hobbyist
                wrote on last edited by john_hobbyist
                #30

                @SGaist, @mrjj : I have posted the code previously. But again I got the code form github repository and I inserted inside the code for rubberband (all those I have posted in my initial post) I execute the python code and again the same error.... Any ideas??

                mrjjM 1 Reply Last reply
                0
                • J john_hobbyist

                  @SGaist, @mrjj : I have posted the code previously. But again I got the code form github repository and I inserted inside the code for rubberband (all those I have posted in my initial post) I execute the python code and again the same error.... Any ideas??

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #31

                  @john_hobbyist
                  Hi
                  the
                  'MyMplCanvas' object has no attribute 'rubberBand'
                  or the
                  object has no attribute 'set_canvas'

                  1 Reply Last reply
                  1
                  • J Offline
                    J Offline
                    john_hobbyist
                    wrote on last edited by
                    #32

                    Hi, sorry, what should I do?

                    mrjjM 1 Reply Last reply
                    0
                    • J john_hobbyist

                      Hi, sorry, what should I do?

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #33

                      @john_hobbyist

                      hi
                      fix the error.
                      Tell what line number and what it says.

                      J 1 Reply Last reply
                      1
                      • mrjjM mrjj

                        @john_hobbyist

                        hi
                        fix the error.
                        Tell what line number and what it says.

                        J Offline
                        J Offline
                        john_hobbyist
                        wrote on last edited by
                        #34

                        @mrjj Hi, for the posted source code above...this is the error:

                        Traceback (most recent call last):
                          File "code.py", line 513, in <module>
                            window = OrthoView()
                          File "code.py", line 279, in __init__
                            self.plotCanvas = MyMplCanvas(self)
                          File "code.py", line 113, in __init__
                            super().__init__(parent)
                          File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5agg.py", line 21, in __init__
                            super().__init__(figure=figure)
                          File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5.py", line 214, in __init__
                            super().__init__(figure=figure)
                          File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 1722, in __init__
                            figure.set_canvas(self)
                        AttributeError: 'OrthoView' object has no attribute 'set_canvas'
                        
                        
                        mrjjM 1 Reply Last reply
                        0
                        • J john_hobbyist

                          @mrjj Hi, for the posted source code above...this is the error:

                          Traceback (most recent call last):
                            File "code.py", line 513, in <module>
                              window = OrthoView()
                            File "code.py", line 279, in __init__
                              self.plotCanvas = MyMplCanvas(self)
                            File "code.py", line 113, in __init__
                              super().__init__(parent)
                            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5agg.py", line 21, in __init__
                              super().__init__(figure=figure)
                            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backends/backend_qt5.py", line 214, in __init__
                              super().__init__(figure=figure)
                            File "/home/john/Desktop/test/venv/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 1722, in __init__
                              figure.set_canvas(self)
                          AttributeError: 'OrthoView' object has no attribute 'set_canvas'
                          
                          
                          mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #35

                          Hi

                          Ok so it has NOTHING to do with the rubberband at all.
                          Even before you try to insert that, the app was not working.

                          So it complains about
                          figure.set_canvas(self)

                          So perhaps you didnt copy the figure class etc ?

                          1 Reply Last reply
                          2
                          • J Offline
                            J Offline
                            john_hobbyist
                            wrote on last edited by
                            #36

                            @mrjj I have copied everything from the github repository. The only small modification I did in rubberband code is that I changed this part:

                            import sys
                            
                            from PySide2.QtCore import QRect
                            from PySide2.QtCore import QSize
                            from PySide2.QtWidgets import QWidget
                            from PySide2.QtWidgets import QRubberBand
                            from PySide2.QtWidgets import QApplication
                            

                            to this one:

                            import rubberband
                            import sys
                            
                            
                            from PyQt5 import QtWidgets
                            from PyQt5 import QtCore 
                            
                            
                            from PyQt5.QtWidgets import * 
                            from PyQt5 import QtCore, QtGui
                            from PyQt5.QtGui import * 
                            from PyQt5.QtCore import * 
                            

                            Could this be the source of the strange errors?

                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #37

                              Rather than just copying it, did you try to run the application from the repo as is ?

                              Interested in AI ? www.idiap.ch
                              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                              J 1 Reply Last reply
                              2
                              • SGaistS SGaist

                                Rather than just copying it, did you try to run the application from the repo as is ?

                                J Offline
                                J Offline
                                john_hobbyist
                                wrote on last edited by
                                #38

                                @SGaist Hi,yes, it runs without any problems!

                                1 Reply Last reply
                                0
                                • SGaistS Offline
                                  SGaistS Offline
                                  SGaist
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #39

                                  Then compare it to your version and see where the difference lies.

                                  Interested in AI ? www.idiap.ch
                                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  J 1 Reply Last reply
                                  2
                                  • SGaistS SGaist

                                    Then compare it to your version and see where the difference lies.

                                    J Offline
                                    J Offline
                                    john_hobbyist
                                    wrote on last edited by
                                    #40

                                    @SGaist : I have tried any possible solution! Is there any other way to select an area on image apart from rubberband?

                                    JonBJ 1 Reply Last reply
                                    0
                                    • J john_hobbyist

                                      @SGaist : I have tried any possible solution! Is there any other way to select an area on image apart from rubberband?

                                      JonBJ Offline
                                      JonBJ Offline
                                      JonB
                                      wrote on last edited by
                                      #41

                                      @john_hobbyist
                                      I don't think so, rubber band is the right way to do it. Even if there were another way, like just clicking, I presume you would face the same issues getting it right as you are now for rubber band.

                                      1 Reply Last reply
                                      1
                                      • J Offline
                                        J Offline
                                        john_hobbyist
                                        wrote on last edited by
                                        #42

                                        I try for many hours to incorporate another code in the code from the github repository. I have fixed some errors (because it was written basically for PyQt4). But I cannot fix this error:

                                        Traceback (most recent call last):
                                          File "code_2.py", line 333, in <module>
                                            screen_pixmap = QtGui.QPixmap.grabWidget(app.desktop()) 
                                        NameError: name 'QtGui' is not defined
                                        Segmentation fault (core dumped)
                                        
                                        

                                        I change the QtWidgets to QtGui and I get this error:

                                        Traceback (most recent call last):
                                        File "code_2.py", line 333, in <module>
                                          screen_pixmap = QtWidgets.QPixmap.grabWidget(app.desktop()) 
                                        AttributeError: module 'PyQt5.QtWidgets' has no attribute 'QPixmap'
                                        Segmentation fault (core dumped)
                                        
                                        

                                        Any ideas??

                                        mrjjM JonBJ 2 Replies Last reply
                                        0
                                        • J john_hobbyist

                                          I try for many hours to incorporate another code in the code from the github repository. I have fixed some errors (because it was written basically for PyQt4). But I cannot fix this error:

                                          Traceback (most recent call last):
                                            File "code_2.py", line 333, in <module>
                                              screen_pixmap = QtGui.QPixmap.grabWidget(app.desktop()) 
                                          NameError: name 'QtGui' is not defined
                                          Segmentation fault (core dumped)
                                          
                                          

                                          I change the QtWidgets to QtGui and I get this error:

                                          Traceback (most recent call last):
                                          File "code_2.py", line 333, in <module>
                                            screen_pixmap = QtWidgets.QPixmap.grabWidget(app.desktop()) 
                                          AttributeError: module 'PyQt5.QtWidgets' has no attribute 'QPixmap'
                                          Segmentation fault (core dumped)
                                          
                                          

                                          Any ideas??

                                          mrjjM Offline
                                          mrjjM Offline
                                          mrjj
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #43

                                          Hi
                                          Are you using Qtpy5 ?

                                          I think its
                                          from PyQt5.QtGui import QPixmap

                                          https://www.pythonguis.com/faq/adding-images-to-pyqt5-applications/

                                          J 1 Reply Last reply
                                          1

                                          • Login

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