[PyQt] Not understanding instanceof() in this situation

Kyle Altendorf sda at fstab.net
Tue Jul 17 17:38:36 BST 2018


I _think_ I see what's going on.  You have a file named main.py (you
probably meant `from main import Main`?) which you run directly such as
`venv/bin/python main.py`.  When you do this it isn't `main` but rather
`__main__` because you are running it directly and that's what Python
does in that case.  When you import the `main.py` file you get another
copy imported under the name `main`.  Each is separate including unique
objects being created for the classes defined in `main.py`. 

I almost always use entry_points in my setup.py now instead of running
files directly.  I also make sure to have an installable project any
time I need to import my own code.  Not-installed imports are fiddly... 
oh, and work in a virtualenv (basically required on linux), but i
digress. 

https://github.com/altendky/basicpyqt5example/blob/7bf5a5862d131f767df03632dc34e2b33c461a15/setup.py#L24


Cheers, 

-kyle 

On 2018-07-17 08:45, J Barchan wrote:

> Sorry if this turns out to be a general question about Python's instanceof() rather than specifically PyQt..... 
> 
> For debugging leaks (in a simple fashion) I am walking QtWidgets.QApplication.allWidgets() looking at those whose parent() is None. 
> 
> I come across one I wish to ignore.  PyCharm debugger shows its class as __main__.Main.  My code has: 
> 
> class Main(QtWidgets.QMainWindow): 
> ... 
> 
> if __name__ == '__main__':
> mainWindow = Main() 
> So in my checker I try: 
> 
> from main.py import Main 
> if isinstance(widget, Main): ... 
> 
> But this returns False on the widget.  I discovered I can just check instead for isinstance(widget, QtWidgets.QMainWindow), so I'm OK and that's better anyway. 
> 
> But I don't understand why it is not an instance of my Main given that is derived from QtWidgets.QMainWindow?  Could someone patiently enlighten me? 
> -- 
> 
> Kindest, 
> Jonathan 
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20180717/1d4586d4/attachment.html>


More information about the PyQt mailing list