[Qgis-user] Accessing temporal controller stuff via the python console

Nyall Dawson nyall.dawson at gmail.com
Mon Jan 24 15:27:37 PST 2022


On Tue, 25 Jan 2022 at 04:39, Cory Albrecht <maps at hanfastolfe.com> wrote:
>
> But the `navigator.setCurrentFrameNumber(f)` doesn't change the canvas' temporal frame.
>
> If I do `f=54003` manually in the console and then `navigator.setCurrentFrameNumber(f)` manually as well, the frame changes. I've used time.sleep() with values up to 5 seconds to see if setting the frame was just a background task that returns early before actually completed, but that didn;t make any difference.
>

Try QCoreApplication.processEvents() instead of time.sleep

> Why does it not change the frame in the middle of the for loop?

it's a bit technical, but you need to let the Qt "event loop" process
in order for any GUI widgets to update. time.sleep doesn't do this --
it just blocks the caller for the requested time, and doesn't let Qt
do it's thing and update the screen.

But a huge warning is needed here: processEvents() is very dangerous
to call in certain circumstances. Here it's ok to do, but definitely
use with caution!! (You'll know you're using it wrong if you get
crashes...)

Nyall



>
> On Tue, Jan 18, 2022 at 2:32 PM Cory Albrecht <maps at hanfastolfe.com> wrote:
>>
>> Thanks, I'll check it out.
>>
>> On Sun, Jan 16, 2022 at 8:04 PM Nyall Dawson <nyall.dawson at gmail.com> wrote:
>>>
>>> On Mon, 17 Jan 2022 at 10:46, Cory Albrecht <maps at hanfastolfe.com> wrote:
>>> >
>>> > Thanks for the pointer, but unfortunately it is incomplete. It tells me this:
>>> >
>>> >     # get the current  responsible for the mapCanvas behaviour and Temporal Controller gui
>>> >     navigator = iface.mapCanvas().temporalController()
>>> >
>>> > And a few other methods for that object, but it's all about mimicking the "Save Animation" button with no explanation how to choose a specific frame or even anything as simple as going forward or backward by a single frame. Is there no list anywhere of all that temporal controller object's methods?
>>>
>>> Yes, in the usual place (the PyQGIS API reference):
>>>
>>>  https://qgis.org/pyqgis/master/core/QgsTemporalNavigationObject.html
>>>
>>> Nyall
>>>
>>> >
>>> >
>>> >
>>> > On Sun, Jan 16, 2022 at 3:40 PM Delaz J <delazj at gmail.com> wrote:
>>> >>
>>> >> Hi Cory,
>>> >>
>>> >> I don't know if it's still compatible with API and of any help, but there's that stale pull request in the docs by Richard (https://github.com/qgis/QGIS-Documentation/pull/5521) you might want to look at.
>>> >>
>>> >> Regards,
>>> >>
>>> >> Harrissou
>>> >>
>>> >> Le 16/01/2022 à 18:34, Cory Albrecht a écrit :
>>> >>
>>> >> Hello,
>>> >>
>>> >> Is there a way I can access and change/set stuff for the dynamic temporal controller programmatically in python? I'm looking to make a simple script that I can just cut and paste into the python console that will change the current frame of the DTC to a given timestamp, export the canvas to a PNG, and repeat for all the timestamps in an array.
>>> >>
>>> >> _______________________________________________
>>> >> Qgis-user mailing list
>>> >> Qgis-user at 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 at 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 at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user


More information about the Qgis-user mailing list