[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: Different behaviour finishing an application in pyqt5 - pyqt6
From:       Gottfried_Müller <gottfried.mueller () gmx ! de>
Date:       2022-03-23 8:24:12
Message-ID: 9004c380-668d-a2ec-6346-2256f454e127 () gmx ! de
[Download RAW message or body]

Thanks for your answer. After reading some other sources and qt
documentations the solution was simplier. I use QApplication.exit() not
QApplication.quit()


Am 22.03.22 um 13:47 schrieb Zhao Lee:
> https://stackoverflow.com/questions/39191394/slot-of-qclipboarddatachanged-was-called-twice
> hope it helps.
>
>
>
>
>
>
> At 2022-03-22 19:02:05, "Gottfried Müller"<gottfried.mueller@gmx.de>  wrote:
> >Hello,
> >
> >the follwing example shows a different behaviour in pyqt5 and pyqt6. I
> >did not found the reason. In pyqt5 after pressing the exit menu the
> >function "confirmClose" is called once, in pyqt6 twice. Closing the
> >application window does not show this effect. I wonder I am using
> >QApplication.quit but I did not find it in the Qt documentations and I
> >get no error. Substitute QApplication.quit with sys.exit has the same
> >different effect.
> >I am using manjaro pyt6.2.3, pyqt5.15.6, qt 6.2.3, qt.5.13
> >
> >import sys
> >from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QMenu,
> >QVBoxLayout
> >
> >class ApplWindow(QWidget):
> >        def __init__(self, parent=None):
> >                super().__init__(parent=parent)
> >                btn = QPushButton("Appl menu", parent=self)
> >                menu = QMenu(parent=self)
> >                exitProg = menu.addAction("Exit program")
> >                exitProg.triggered.connect(self.confirmClose)
> >                btn.setMenu(menu)
> >                layout = QVBoxLayout()
> >                layout.addWidget(btn)
> >                self.setLayout(layout)
> >
> >        def closeEvent(self, event):
> >                self.confirmClose()
> >                event.ignore()
> >
> >        def confirmClose(self):
> >                print("close confirmed")
> >                QApplication.quit()
> >
> >def main():
> >        appl = QApplication(sys.argv)
> >        applWindow = ApplWindow()
> >        applWindow.show()
> >        return appl.exec()
> >
> >
> >if __name__ == "__main__":
> >        main()
>
>

[Attachment #3 (text/html)]

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Thanks for your answer. After reading some other sources and qt
    documentations the solution was simplier. I use QApplication.exit()
    not QApplication.quit()<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 22.03.22 um 13:47 schrieb Zhao Lee:<br>
    </div>
    <blockquote type="cite"
      cite="mid:649cf32e.6ef0.17fb1ab6c1b.Coremail.redstone-cold@163.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div
        style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial">
        <div style="margin: 0;"><a class="moz-txt-link-freetext" \
href="https://stackoverflow.com/questions/39191394/slot-of-qclipboarddatachanged-was-c \
alled-twice">https://stackoverflow.com/questions/39191394/slot-of-qclipboarddatachanged-was-called-twice</a></div>
  <div style="margin: 0;">hope it helps.</div>
        <p style="margin: 0;"><br>
        </p>
        <p style="margin: 0;"><br>
        </p>
        <p style="margin: 0;"><br>
        </p>
        <p style="margin: 0;"><br>
        </p>
        <p style="margin: 0;"><br>
        </p>
        <pre>
At 2022-03-22 19:02:05, "Gottfried Müller" <a class="moz-txt-link-rfc2396E" \
href="mailto:gottfried.mueller@gmx.de">&lt;gottfried.mueller@gmx.de&gt;</a> wrote: \
&gt;Hello, &gt;
&gt;the follwing example shows a different behaviour in pyqt5 and pyqt6. I
&gt;did not found the reason. In pyqt5 after pressing the exit menu the
&gt;function "confirmClose" is called once, in pyqt6 twice. Closing the
&gt;application window does not show this effect. I wonder I am using
&gt;QApplication.quit but I did not find it in the Qt documentations and I
&gt;get no error. Substitute QApplication.quit with sys.exit has the same
&gt;different effect.
&gt;I am using manjaro pyt6.2.3, pyqt5.15.6, qt 6.2.3, qt.5.13
&gt;
&gt;import sys
&gt;from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QMenu,
&gt;QVBoxLayout
&gt;
&gt;class ApplWindow(QWidget):
&gt;        def __init__(self, parent=None):
&gt;                super().__init__(parent=parent)
&gt;                btn = QPushButton("Appl menu", parent=self)
&gt;                menu = QMenu(parent=self)
&gt;                exitProg = menu.addAction("Exit program")
&gt;                exitProg.triggered.connect(self.confirmClose)
&gt;                btn.setMenu(menu)
&gt;                layout = QVBoxLayout()
&gt;                layout.addWidget(btn)
&gt;                self.setLayout(layout)
&gt;
&gt;        def closeEvent(self, event):
&gt;                self.confirmClose()
&gt;                event.ignore()
&gt;
&gt;        def confirmClose(self):
&gt;                print("close confirmed")
&gt;                QApplication.quit()
&gt;
&gt;def main():
&gt;        appl = QApplication(sys.argv)
&gt;        applWindow = ApplWindow()
&gt;        applWindow.show()
&gt;        return appl.exec()
&gt;
&gt;
&gt;if __name__ == "__main__":
&gt;        main()
</pre>
      </div>
      <br>
      <br>
      <span title="neteasefooter">
        <p>  </p>
      </span></blockquote>
    <br>
  </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic