You are on page 1of 25

Python GUI programming with

PySide
Speaker: BigLittle
Date: 2013/03/04

CuuDuongThanCong.com
CLI vs. GUI
CLI (Command Line Interface) GUI (Graphical User Interface)
• Take less resources. • Easier for user to view and
• User have much more control your application.
control of their system. • Ability of multitasking.
• Only need to execute few
line to perform a task.

CuuDuongThanCong.com
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.

CuuDuongThanCong.com
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?

CuuDuongThanCong.com
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.

CuuDuongThanCong.com
A Simple Program
• test.py object oriented programming styles

Just so easy!
CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py

Import PySide module here.

CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py

Inherit class “QMainWindow”

set it’s title then show itself.

CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py

Contains the main event loop.


Create MyWindow instance

CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py

Actually, the easiest way may be:

app = QApplication(sys.argv)
main = QMainWindow()
main.setWindowTitle(“First GUI”)
main.show()
sys.exit(app.exec_())

Trigger when execute test.py.

CuuDuongThanCong.com
Where Is Other 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.

CuuDuongThanCong.com
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

QGridLayout
QVBoxLayout

QFormLayout

CuuDuongThanCong.com
QWidget
• Example Think: What’s the layout setting
in the QGroupBox?

CuuDuongThanCong.com
Let’s Put Something On It

CuuDuongThanCong.com
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.
trigger response
• In Qt, trigger & response are called SIGNAL & SLOT

CuuDuongThanCong.com
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

CuuDuongThanCong.com
Exercise…
• Try to modify the simple program to MD5 Encrypter.

CuuDuongThanCong.com
Exercise… (cont’d)
• You need import hashlib first

CuuDuongThanCong.com
Use Advanced Module
• Matplotlib - A Python plotting library. (Based on PySide!)
• SciPy - An open source library of scientific tools for Python.
• VTK - Visual Tool Kit (TVTK, Mayavi)

CuuDuongThanCong.com
Much Better Than Excel…
• Source code: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html

CuuDuongThanCong.com
Something To Be Continued
• Decorations:
• Take advantages of groups, tabs, tooltips, …, etc.
• Add some icons, sounds or visual effects.

• Maintains:
CurveExpert
• Debug, debug and debug. (PyInstaller)

• Packing/Release:
• PyInstaller - Cross platform
• cx_Freeze - Cross platform
• py2exe - Window only

BitTorrent
(py2exe)
CuuDuongThanCong.com
Create Your Own GUI App!
• Model-View-Controller
• Automation Tool
• Distributed Programming
• Database Management
• Multimedia
• CAD Software
• Embedded System
• Web Application
• Games
• ……

CuuDuongThanCong.com
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. All 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,


drag & 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.

CuuDuongThanCong.com
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

CuuDuongThanCong.com
Thanks for your attention.

CuuDuongThanCong.com

You might also like