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.0k 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.
  • J john_hobbyist

    @SGaist So methods inside this method?

    def updateFrame(self):
    
    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by mrjj
    #23

    @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 2 Replies Last reply
    2
    • 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

                                          • Login

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