<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Importing the pyuic generated file is not exactly the same as using loadUi().</div><div>The imported ui object is not a PyQt QObject, but a standard Python object derived class that contains references to the GUI objects once it's setup onto the Qt base class.</div><div dir="ltr"><div>As you can see in the PyQt Designer documentation ( <a href="http://pyqt.sourceforge.net/Docs/PyQt5/designer.html">http://pyqt.sourceforge.net/Docs/PyQt5/designer.html</a> ), subclassing the original class type only (QMainWindow, QDialog, etc) requires you to instanciate the UI object, which is a Python object that is able to "build" the GUI "inside" the subclassed widget object. By using the multiple inheritance method, the UI object is already "built in" the class instance, and that's why you can access the ui objects directly, exactly as you can do after using loadUi().</div><div><br></div><div>The setWindowTitle and findChildren are methods of the base Qt class (QMainWindow/QWidget, and QObject) you are inheriting from, while the "form" class contains all references to the objects of the interface (widgets and actions) that are built *into* the base Qt class, and that's why you can access them only from the self.ui interface.</div><div>What loadUi does is to build the GUI into the main widget as setupUI does, while also setting widgets and actions as the main class attributes as it happens with the multiple inheritance system.</div><div><br></div><div>Hope this might clear up things (if anybody reads some misconceptions and mistakes in my comprehension of PyQt ui interface, I'd be happy to be corrected :-) )</div><div>Maurizio</div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno dom 10 mar 2019 alle ore 15:43 Hans Jörg Maurer <<a href="mailto:hjm@pmeonline.net">hjm@pmeonline.net</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div><div>@michael h @Barry:</div><div>Thanks. But indeed you have to decide which way to go. In the meantime I found a workaround:</div><div>The directory of the ui - File must be include in the pyprogramfile.spec as pathex=nameofui.ui or as hiddenimport on the command line of pyinstaller.</div><div><br></div><div>Nethertheless it is confusing that there are different behaviors if a ui is loaded as file or imported. In my opinion there should be no difference. Maybe there are more troublemakers...</div><div><br></div><div>Regards</div><div>Hans<br></div><div><br></div><blockquote style="border-width:0px 0px 0px 2px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-top-color:initial;border-right-color:initial;border-bottom-color:initial;border-left-style:solid;border-left-color:rgb(34,67,127);padding:0px 0px 0px 5px;margin:0px 0px 0px 5px"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><br><br></div><div>Both did run, but if I use the import and set e.g. "self.ui.setWindowTitle('Do not read my title')" the app crashes with "AttributeError: 'Ui_MainWindow' object has no attribute 'setWindowTitle'" I don't understand the reason and in addition I have no idea how to solve this. Further ith hangs on <br></div><div> widgetList = self.ui.findChildren (QPushButton)<br>AttributeError: 'Ui_MainWindow' object has no attribute 'findChildren'<br></div><div>The idea behind was that I compile the ui before I run pyinstaller to avoid problems at runtime.<br></div></div><br></blockquote><div><br></div><div>You need to call self.setWindowTitle or self.findChildren. Those are methods on QMainWindow.</div><div><br></div><div><br></div></div></div>
</blockquote></div>
_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="noreferrer" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">È difficile avere una convinzione precisa quando si parla delle ragioni del cuore. - "Sostiene Pereira", Antonio Tabucchi<br><a href="http://www.jidesk.net" target="_blank">http://www.jidesk.net</a></div>