<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Okay then I am going to agree to disagree because in my many
years of experience is that any black-box piece of software that
you add to your code especially the one that handles your UI is
going to be just a pain to work with sooner or later as you try to
do various things with it. And frankly really slapping a window
together using normal PyQt is just as easily done as it would be
to create if via the Designer but when you are done you have solid
code you can work with it and not some complex black-box that you
have to do back-flips with just to get it do rather simple things.</p>
<p>So yes there is no perfect tool but when a tool is created that
makes something worse to work with that is not to me a effectively
tool -- okay sure if you are creating something that does not need
to be interfaced with via your code then go for it but as soon as
your code needs to interact with that GUI (like most programs do)
you going to have issues.<br>
</p>
<div class="moz-cite-prefix">On 10/1/2019 9:01 PM, Maurizio Berti
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAPn+-XRfaGckH0RH=uAhwBLsVNQBLTqz_ac-UY40LQM0XNffQg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">As the "law of the instrument" says, «if
the only tool you have is a hammer, [you] treat
everything as if it were a nail».</div>
<div dir="ltr"><br>
</div>
<div>There is no perfect tool for everything (nor
everybody).</div>
<div>I use to create simpler interfaces directly in
code, but for more complex situations I prefer
Designer, as it allows to fix or change the layout
very easily.</div>
<div><br>
</div>
<div>In my opinion, the real problem with Designer is
that most people (usually those who are new to Qt or
python) don't realize that its output should be left
as it is, especially the pyuic generated files; what
happens there instead is that those people believe
that they should write their programs within those py
files. I remember doing the same myself when I began
exploring PyQt.<br>
Being automatically generated, those files contain
lots of code that in most cases is almost useless,
particularly to those inexperienced users; it's what
happens with any WYSIWYG editor.</div>
<div><br>
When dealing with mid to advanced GUIs (multi-level
nested layouts or stacked widgets), the common (not
absolute!) suggestion is to use Designer, as it *is* a
time saver: it allows to easily see if the interface
_works_ from an UX point of view while drawing it, and
eventually change the whole layout in a matter of
seconds - something that would take minutes (if not
hours) if the interface is coded.</div>
<div>Most importantly, when you can use a graphical
editor for a GUI, you can really focus *only* on
creating the interface, without thinking about good
object names (which can be done once the layout is
finished), code consistency and, obviously, syntax.<br>
</div>
<div><br>
One of my programs has a window that contains more
than 200 widgets with up to 6 levels of nested layouts
(it's a synthesizer editor, and almost all controls
*have* to be on a single window).</div>
<div>Using Designer I was able to create the basic
skeleton in less than 10 minutes, with less than an
hour of fine-tuning and object naming/property
setting.</div>
<div>In the earlier version I couldn't use Designer
because most widgets couldn't be just "promoted" (I
use custom widget plugins now), coding the whole
interface literally took me at least a dozen hours:
dealing with that amount of layouts and widgets
requires careful organization, and it's not easy to
fix or change things with more than 400 lines of
layout "code flow"; most of the time is taken by
continuously switching between coding and running to
see if the result worked, both aesthetically and from
an UX perspective (or if it worked at all ;-) ), and
eventually go back to the code, remember the object
name you need to fix or change, find it and finally
edit hoping that you're not breaking something.<br>
</div>
<div>And if I decide to rethink the whole layout, now it
would just be a matter of 5-10 minutes of drag'n'drop
from the existing interface to a new one.</div>
<div><br>
</div>
<div>In conclusion.</div>
<div><br>
For basic and simple interfaces, coding is usually
simpler and better (no need to import a 2k file with
useless data for a dialog with 3 buttons and a label).<br>
If you have a more complex GUI, Designer is your
friend, especially if you don't have a specific design
in mind yet.</div>
<div>If you can, directly use the ui files (use
PyQt5.uic.loadUi to load them, careful with file paths
though): sometimes it happens that you update the ui
but forget to generate the py file).</div>
<div>If you have to use pyuic files, just import them,
never touch them, and ignore their contents (if not
for learning purposes).<br>
</div>
<div><br>
Maurizio</div>
</div>
</div>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">Il giorno mer 2 ott 2019 alle
ore 01:29 michael h <<a
href="mailto:michaelkenth@gmail.com" moz-do-not-send="true">michaelkenth@gmail.com</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 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"><br>
Anyways, just to be direct, I use Designer and it
doesn't seem to have <br>
ruined my programs.<br>
<br>
</blockquote>
<div><br>
</div>
<div>Going to agree with Kyle on this one. </div>
<div><br>
</div>
<div>Designer has it's place. I'd rather be working on
features rather than coding dialogs and other simple
windows by hand.</div>
<div>The ability to do it all by hand is a required skill
in my opinion but used correctly designer is a time
saver.<br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
_______________________________________________<br>
PyQt mailing list <a
href="mailto:PyQt@riverbankcomputing.com" target="_blank"
moz-do-not-send="true">PyQt@riverbankcomputing.com</a><br>
<a
href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt"
rel="noreferrer" target="_blank" moz-do-not-send="true">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"
moz-do-not-send="true">http://www.jidesk.net</a></div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
PyQt mailing list <a class="moz-txt-link-abbreviated" href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a>
<a class="moz-txt-link-freetext" href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a>
</pre>
</blockquote>
</body>
</html>