Python GUI programming with PySide - Meetup

adventurescoldSoftware and s/w Development

Nov 7, 2013 (3 years and 9 months ago)

95 views

Python GUI programming with
PySide

Speaker:
BigLittle

Date: 2013/03/04

CLI vs. GUI

CLI

(Command Line Interface)


Take less resources.


User have much more
control of their system.


Only need to execute few
line to perform a task.


GUI

(Graphical User Interface)


Easier for user to view and
control your application.


Ability of multitasking.

About Python + GUI


Some GUI library for Python:


Tkinter

-

Python's standard
GUI
package
.
(
Tcl
/
Tk
)


wxPython

-

A
Python extension module
that wraps
wxWidgets

library.


PyQt4
-

A
Python binding of the cross
-
platform GUI toolkit
Qt
.


PySide

-

A
Python binding of the cross
-
platform GUI toolkit
Qt
.



Qt

&
wxWidgets

are both well known C++ GUI library:


They are free and open source.


They are cross
-
platform and support Unicode.


They have full documentation and community support.

Why
Qt

/
PySide
?


Pros:


It’s NOT MFC style.


Easy to build up by
QtDesigner

or text coding.


Intuitive SIGNAL / SLOT mechanism.


Supports I18N
.
(Internationalization)


LGPL.
(GNU Lesser General Public
License)


The API is more
Pythonic
.



Cons:


Qt

is not written in standard C++ library.


Application size is big.


blabla
……

I don’t care, and you?

Before Starting…


Install Python (What?!)


http://
www.python.org/download


User should note the compatibility between version 2.7.x and 3.x.



Install
Qt


http://
qt
-
project.org/downloads


The latest version is 5.0. (It’s too new for me... =.=)



Install
PySide


http://
qt
-
project.org/wiki/PySideDownloads


Current version is 1.1.2, but most references on web is for 1.0.7.

A Simple Program


test.py

Just so easy!

object oriented programming styles

A Simple Program (cont’d)


test.py

Import
PySide

module here.


A Simple Program (cont’d)


test.py

Inherit class “
QMainWindow


set it’s title then show itself.

A Simple Program (cont’d)


test.py


Create
MyWindow

instance


Contains
the main event
loop.

A Simple Program (cont’d)


test.py


Trigger when execute test.py.

Actually, the easiest way may be:



app =
QApplication
(
sys.argv
)



main =
QMainWindow
()



main.setWindowTitle
(“First GUI”)



main.show
()



sys.exit
(
app.exec
_())

Where Is
O
ther Stuff?


Just like a HD, you must format it then you can put in your data.


HD



Current Window


Format



QLayout


Data



QWidget



QLayout

and
QWidget

are the

most basic classes that make up

your GUI.



QMainWindow

is a subclass of
QWidget
.

Right figure shows the default configuration.

QLayout


In fact, you don’t need to start from
QLayout

itself. There are
many pre
-
designed layout. Use them directly should be enough.

QHBoxLayout

QVBoxLayout

QGridLayout

QFormLayout

QWidget


Example

Think:

What’s the layout setting


in the
QGroupBox
?

Let’s Put Something On It


How
To
Activate It?


Now you have a “skin” of your application. Let’s make it activated.
For example,
push “Big” button

then
type “Bigger” on the editor
.




In
Qt
, trigger & response are called
SIGNAL

&
SLOT


trigger

response

SIGNAL /
SLOT


self.btn1
.
clicked
.
connect
(
self.typebig
)


The advantage of SIGNAL / SLOT is the
caller does not have to
know anything about the receiver and vice
versa.


Any
function could be a SLOT
.


One can connect
several
SLOT
to
a SIGNAL and vice versa.



A

common usage: Real
-
time check for input contents

Exercise…


Try to modify the simple program to MD5
Encrypter
.


Exercise
… (cont’d)


You need
import

hashlib

first

Use Advanced Module


Matplotlib

-

A Python plotting library. (Based on
PySide
!)


SciPy

-

An open
s
ource
library of scientific tools for
Python.


VTK

-

Visual Tool Kit (TVTK,
Mayavi
)


Much
Better Than
Excel…


Source code:
http
://matplotlib.org/examples/pylab_examples/demo_agg_filter.html

Something To Be
Continued


Decorations:


Take advantages of groups, tabs, tooltips, …, etc.


Add some icons, sounds or visual effects.



Maintains:


Debug, debug and debug.



Packing/Release:


PyInstaller

-

C
ross platform


cx_Freeze


-

C
ross
platform


py2exe

-

Window only

CurveExpert

(
PyInstaller
)

BitTorrent

(py2exe)

Create Your Own GUI App!


Model
-
View
-
Controller


Automation Tool


Distributed Programming


Database Management


Multimedia


CAD Software


Embedded System


Web Application


Games


……


Summary


GUI
programming could help you interactively control the
application and report visualized final data
. Every programmer
should familiar with its basic concept.



Programming
in
PySide

= Programming
in
OOP.

A
ll components
in library can
be easily adapted and
modified
.
Try to
use them as
much as
possible.



There are many “splendid” functions like graphics, animation,
d
rag
&
drop…, etc. for GUI programming. You can improve the
user experience by these, but remember to pay
more attention
on the performance of
your application.

References


http
://
zh.wikipedia.org/wiki/Qt


http://
qt
-
project.org/wiki/PySide


http://
matplotlib.org


http://
www.scipy.org


http://
www.vtk.org


http://
www.pyinstaller.org


http://
cx
-
freeze.sourceforge.net


http://
www.py2exe.org

Thanks for your attention.