Search code examples
pythonpyqtpyqt4qwidgetqmainwindow

PyQT - list QWidgets/Windows


I have a

class Main(QtGui.QMainWindow):

That is able to click>spawn a x number of windows that are:

class dataWindow(QtGui.QWidget)

Is there a way in PyQt to now find all spawned dataWindow's and get their objectName? each window has unique objectName. I tried going via :

a= self.findChild(QWidget, self.newDataWids[0]["window_name"]) - as I have all names stored in dict upon creation

but it only returns None. I think its because the dataWindow are not parented to Main window class I believe... so I either have to parent them - not sure how. Or somehow find them out in the "wild"...

Any ideas would be great.
Regards, Dariusz

Edit_1: A glitch in my code bugged out my current attempt. After relooking I managed to get it to work. I simply stored the window in temporary dictionary and then used that to retrieve access to window.


Solution

  • You parent objects by passing in the parent to their constructor. You'll have to check the documentation for each widget to get the correct argument position.

    widget = QtGui.QWidget(self)
    btn = QtGui.QPushButton('Button Text', self)
    

    But really, you shouldn't have to do a search for children to get the child windows. Your main window should be keeping handles to them.

    def __init__(...)
        ...
        self._windows = []
    
    def createSubWindow(self):
        window = WindowClass(self)
        self._windows.append(window)