Check if button is pressed in QGIS 3 module





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







3















There is a plugin I wrote for QGIS and I added some buttons there.
From main launch Python script I need to check is specific button is clicked and according to that do some stuff.



I saw a default condition in main script:



def run(self):
if self.first_start == True:
self.first_start = False
self.dlg = frame_builderDialog()
self.dlg.show()
result = self.dlg.exec_()
if result:
pass
'or do something'


In this case I can catch event if I had an "OKCancel" button. But I have another simple buttons. I tried to catch them using something like



result_btn = self.dlg.pushButton.clicked


where pushButton is one of the buttons taken from script with dialog, but nothing were returned.



What should be done here?










share|improve this question































    3















    There is a plugin I wrote for QGIS and I added some buttons there.
    From main launch Python script I need to check is specific button is clicked and according to that do some stuff.



    I saw a default condition in main script:



    def run(self):
    if self.first_start == True:
    self.first_start = False
    self.dlg = frame_builderDialog()
    self.dlg.show()
    result = self.dlg.exec_()
    if result:
    pass
    'or do something'


    In this case I can catch event if I had an "OKCancel" button. But I have another simple buttons. I tried to catch them using something like



    result_btn = self.dlg.pushButton.clicked


    where pushButton is one of the buttons taken from script with dialog, but nothing were returned.



    What should be done here?










    share|improve this question



























      3












      3








      3








      There is a plugin I wrote for QGIS and I added some buttons there.
      From main launch Python script I need to check is specific button is clicked and according to that do some stuff.



      I saw a default condition in main script:



      def run(self):
      if self.first_start == True:
      self.first_start = False
      self.dlg = frame_builderDialog()
      self.dlg.show()
      result = self.dlg.exec_()
      if result:
      pass
      'or do something'


      In this case I can catch event if I had an "OKCancel" button. But I have another simple buttons. I tried to catch them using something like



      result_btn = self.dlg.pushButton.clicked


      where pushButton is one of the buttons taken from script with dialog, but nothing were returned.



      What should be done here?










      share|improve this question
















      There is a plugin I wrote for QGIS and I added some buttons there.
      From main launch Python script I need to check is specific button is clicked and according to that do some stuff.



      I saw a default condition in main script:



      def run(self):
      if self.first_start == True:
      self.first_start = False
      self.dlg = frame_builderDialog()
      self.dlg.show()
      result = self.dlg.exec_()
      if result:
      pass
      'or do something'


      In this case I can catch event if I had an "OKCancel" button. But I have another simple buttons. I tried to catch them using something like



      result_btn = self.dlg.pushButton.clicked


      where pushButton is one of the buttons taken from script with dialog, but nothing were returned.



      What should be done here?







      qgis pyqgis qt pyqt5






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 16 hours ago









      Vince

      14.8k32849




      14.8k32849










      asked 18 hours ago









      Pavel PereverzevPavel Pereverzev

      491211




      491211






















          2 Answers
          2






          active

          oldest

          votes


















          3














          In python you have "events" and "events handler". when an event occurs they usually (not always...) generate a signal that can be caught by the event handler.



          for example :



          curLayer.selectionChanged.connect(self.test)


          the event is selectionChanged and the event handler is the function handling the signal received (in that case the handler should be a function (written by you) called test (or any other naming ofc).



          your snippet :



          result_btn = self.dlg.pushButton.clicked


          Is meaningless (imho ...)



          So ... in your case u should try an



          self.dlg.pushButton.clicked.connect(self.my_event_handler)


          And write an my_event_handler function of course.






          share|improve this answer

































            2














            You could connect the pushButton to a function so that when it is clicked, it will do something:



            result_btn = self.dlg.pushButton.clicked.connect(self.someFunction)





            share|improve this answer
























              Your Answer








              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "79"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317878%2fcheck-if-button-is-pressed-in-qgis-3-module%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              3














              In python you have "events" and "events handler". when an event occurs they usually (not always...) generate a signal that can be caught by the event handler.



              for example :



              curLayer.selectionChanged.connect(self.test)


              the event is selectionChanged and the event handler is the function handling the signal received (in that case the handler should be a function (written by you) called test (or any other naming ofc).



              your snippet :



              result_btn = self.dlg.pushButton.clicked


              Is meaningless (imho ...)



              So ... in your case u should try an



              self.dlg.pushButton.clicked.connect(self.my_event_handler)


              And write an my_event_handler function of course.






              share|improve this answer






























                3














                In python you have "events" and "events handler". when an event occurs they usually (not always...) generate a signal that can be caught by the event handler.



                for example :



                curLayer.selectionChanged.connect(self.test)


                the event is selectionChanged and the event handler is the function handling the signal received (in that case the handler should be a function (written by you) called test (or any other naming ofc).



                your snippet :



                result_btn = self.dlg.pushButton.clicked


                Is meaningless (imho ...)



                So ... in your case u should try an



                self.dlg.pushButton.clicked.connect(self.my_event_handler)


                And write an my_event_handler function of course.






                share|improve this answer




























                  3












                  3








                  3







                  In python you have "events" and "events handler". when an event occurs they usually (not always...) generate a signal that can be caught by the event handler.



                  for example :



                  curLayer.selectionChanged.connect(self.test)


                  the event is selectionChanged and the event handler is the function handling the signal received (in that case the handler should be a function (written by you) called test (or any other naming ofc).



                  your snippet :



                  result_btn = self.dlg.pushButton.clicked


                  Is meaningless (imho ...)



                  So ... in your case u should try an



                  self.dlg.pushButton.clicked.connect(self.my_event_handler)


                  And write an my_event_handler function of course.






                  share|improve this answer















                  In python you have "events" and "events handler". when an event occurs they usually (not always...) generate a signal that can be caught by the event handler.



                  for example :



                  curLayer.selectionChanged.connect(self.test)


                  the event is selectionChanged and the event handler is the function handling the signal received (in that case the handler should be a function (written by you) called test (or any other naming ofc).



                  your snippet :



                  result_btn = self.dlg.pushButton.clicked


                  Is meaningless (imho ...)



                  So ... in your case u should try an



                  self.dlg.pushButton.clicked.connect(self.my_event_handler)


                  And write an my_event_handler function of course.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 15 hours ago

























                  answered 17 hours ago









                  snaileatersnaileater

                  1,629613




                  1,629613

























                      2














                      You could connect the pushButton to a function so that when it is clicked, it will do something:



                      result_btn = self.dlg.pushButton.clicked.connect(self.someFunction)





                      share|improve this answer




























                        2














                        You could connect the pushButton to a function so that when it is clicked, it will do something:



                        result_btn = self.dlg.pushButton.clicked.connect(self.someFunction)





                        share|improve this answer


























                          2












                          2








                          2







                          You could connect the pushButton to a function so that when it is clicked, it will do something:



                          result_btn = self.dlg.pushButton.clicked.connect(self.someFunction)





                          share|improve this answer













                          You could connect the pushButton to a function so that when it is clicked, it will do something:



                          result_btn = self.dlg.pushButton.clicked.connect(self.someFunction)






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 17 hours ago









                          JosephJoseph

                          58.7k7101206




                          58.7k7101206






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317878%2fcheck-if-button-is-pressed-in-qgis-3-module%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              GameSpot

                              日野市

                              Tu-95轟炸機