Thanks for this question. I had the same issue in my code, but running a
console script in the Qgis application, printing to the console output
would achieve the same thing. Is this applicable to scripts that run in
the console?
On 17/08/22 07:02, Tudorache, Marian via Qgis-user wrote:
Hello community,
A while ago I sent a question about a problem with QMessageBox and
message bar does not get updated during a long process.
In my example I create a script like this.
from qgis.PyQt import QtWidgets
message = "Wait to open the airspace project..."
msg = QtWidgets.QMessageBox()
msg.setText(message)
msg.show()
qgis.utils.iface.messageBar().pushMessage("Wait", message)
for i in range(1000):
print(i)
qgis.utils.iface.messageBar().pushMessage("Done", "The process is done")
msg.setText("The process is done")
msg.show()
qgis.utils.iface.messageBar().pushMessage("Done", "The process is done"))
When I run the scrip in QGIS 2.18 the QMessageBox displays first the
message "Wait to open the airspace project...". The same message is
pushed to messageBar.
Then during the loop it displays the variable i.
At the end of the loop the QMessageBox displays the message "The
process is done" which is also pushed to the messageBar.
When I run the same scrip on QGIS 3 the QMessageBox is empty. The
message "Wait to open the airspace project..." is not displayed by
QMessageBox nor by messageBar.
The print inside the loop displays the I and when the loop is done the
QMessageBox displays the message "The process is done".
The messageBar displays also the message "The process is done". And
after a while it displays the initial message "Wait to open the
airspace project..."
I modified the scrip by adding QApplication.processEvents() inside the
loop and now everything is fine.
It seems QGIS3 no longer triggers this event loop and I have to do
this explicitly by calling processEvents from QApplication.
*Why QGIS 3 needs to call QApplication.processEvents() and QGIS 2 does
not need?*
Thank you,
Marian
------------------------------------------------------------------------
This electronic message, as well as any transmitted files included in
the electronic message, may contain privileged or confidential
information and is intended solely for the use of the individual(s) or
entity to which it is addressed. If you have received this electronic
message in error please notify the sender immediately and delete the
electronic message. Any unauthorized copying, disclosure or
distribution of the electronic message is strictly forbidden. NAV
CANADA accepts no liability for any damage caused by any virus and/or
other malicious code transmitted by this electronic communication.
Le présent message électronique et tout fichier qui peut y être joint
peuvent contenir des renseignements privilégiés ou confidentiels
destinés à l’usage exclusif des personnes ou des organismes à qui ils
s’adressent. Si vous avez reçu ce message électronique par erreur,
veuillez en informer l’expéditeur immédiatement et supprimez le. Toute
reproduction, divulgation ou distribution du présent message
électronique est strictement interdite. NAV CANADA n’assume aucune
responsabilité en cas de dommage causé par tout virus ou autre
programme malveillant transmis par ce message électronique.
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info:https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe:https://lists.osgeo.org/mailman/listinfo/qgis-user
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user