[FAQ] "Best" GUI toolkit for python

pozz pozzugno at gmail.com
Tue Oct 18 12:01:30 EDT 2016


Il 18/10/2016 16:56, Michael Torrie ha scritto:
> On 10/18/2016 02:33 AM, Mark Summerfield wrote:
>> When I started out I used Qt Designer to produce .ui files (XML) and
>> then used the Qt uic tool to convert this to C++ (although you can
>> convert to Python using pyuic). I then studied the code and learnt
>> from that. And it turns out that it isn't very hard. There is
>> QVBoxLayout - widgets one above the other; QHBoxLayout; widgets side
>> by side; QGridLayout - widgets in a grid. The only complication is
>> when you nest these, say a QVBoxLayout inside a QHBoxLayout inside a
>> QGridLayout; but in practice, once you've done it a few times it
>> isn't hard to picture. However, I know highly skilled people who
>> prefer to use Qt Designer, so it is no big deal either way.
>
> I am certainly not highly skilled. But I definitely do use the Designer
> for everything related to the GUI.  I don't, however, use uic or pyuic.
> What I recommend these days is to use the xml .ui file directly in your
> program to create the objects for you.  In C++ with an EXE, you can
> incorporate the .ui file into the executable as a resource.  In Python,
> I would just bundle it with all the other resources I might be using.
> For custom widgets I either build a simple plugin for Designer that lets
> me use the widgets as any other in the visual layout.  Alternatively,
> I'll just change the class type in properties.
>
> The way you use the .ui file loader is to create a class in Python,
> usually for each window or dialog, and subclass it from the appropriate
> Qt type such as QDialog.  Then in the __init__() method, you call
> PyQt.uic.loadUi and it brings all the widgets in and initializes them
> and adds them to the QDialog you are defining. And if you follow the
> naming scheme for your callbacks of on_widgetname_signalName(), it will
> auto connect them. For example, if my button was called "myButton", I
> could name a slot to be on_myButton_clicked() and it would connect
> automatically.  PySides allows something similar with QUiLoader. I use a
> wrapper class that Sebastion Wiesner wrote to make it closer to a
> one-liner wrapper function like PyQt offers.

What are the differences between PySides and PyQt... apart the licence?
Is PySides usable as PyQt?


> I agree with you about making GUIs programmatically being not hard,
> especially when one is learning.  When I first started using Qt, coming
> from GTK, I had to get used to a similar but different boxing model.  In
> GTK, when packing widgets you specify both the expansion and spacing
> while packing.  In Qt, you have explicit spacers to insert into the
> boxes.  I'm not sure which method is better.

So you have some experience on GTK and QT.  Could you spend some time to 
describe a few differences? What do you like with Gtk and what you 
don't? And for Qt?

When you worked with Gtk, have you used Glade as GUI Builder? Could you 
compare Glade and QT Designer?




More information about the Python-list mailing list