[PyQt] Basic thread question

Florian Bruhin me at the-compiler.org
Fri Sep 29 10:44:35 BST 2017


Hey,

On Fri, Sep 29, 2017 at 09:24:05AM +0000, Phil wrote:
> On 29/09/17 19:11, Florian Bruhin wrote:
> > You can't do any operations on GUI elements from a secondary thread.
> 
> Thank you for you reply Florian.
> 
> Do you think that you could provide me with a simple example?
> 
> Say I have a thread class like the one shown in my previous message, how do
> I access a MainWindow widget?

You can't, that's my point ;-)

(Well, you *can*, but it's undefined behavior, see
http://doc.qt.io/qt-5/thread-basics.html#gui-thread-and-worker-thread )

You could do it with a QThread and signals/slots, but I'd really recommend not
using threads at all unless you have a very good reason to do so. There rarely
is such a reason, and the alternatives are much easier and more straightforward.

> > > I know that this is not totally correct, but just say that I wanted to step
> > > the dial point along at a one second rate. How should I proceed?
> > 
> > The proper way to do this would be using a QTimer.
> 
> Are saying that QTimer is non blocking?

Almost everything in Qt is, including QTimer.
I found an example here:
https://github.com/baoboa/pyqt5/blob/master/examples/widgets/digitalclock.py

Florian

-- 
https://www.qutebrowser.org  | me at the-compiler.org (Mail/XMPP)
   GPG: 916E B0C8 FD55 A072  | https://the-compiler.org/pubkey.asc
         I love long mails!  | https://email.is-not-s.ms/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20170929/c2bdd4d6/attachment.sig>


More information about the PyQt mailing list