python gui programming with pyside

Upload: mauricio-jose-tobares

Post on 18-Oct-2015

116 views

Category:

Documents


4 download

TRANSCRIPT

  • 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:

    Its 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 dont 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. (Its 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 (contd)

    test.py

    Import PySide module here.

  • A Simple Program (contd)

    test.py

    Inherit class QMainWindow

    set its title then show itself.

  • A Simple Program (contd)

    test.py

    Create MyWindow instance

    Contains the main event loop.

  • A Simple Program (contd)

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

  • QLayout

    In fact, you dont 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: Whats the layout setting in the QGroupBox?

  • Lets Put Something On It

  • How To Activate It?

    Now you have a skin of your application. Lets 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 (contd)

    You need import hashlib first

  • 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)

  • 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 - Cross platform

    cx_Freeze - Cross 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. 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.

  • 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.