• Only need to execute few line to perform a task.. GUI Graphical User Interface • Easier for user to view and control your application... • Qt & wxWidgets are both well known C++ GUI
Trang 1Python GUI programming with
PySide
Speaker: BigLittle
Date: 2013/03/04
Trang 2CLI 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
Trang 3About 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
Trang 4Why 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?
Trang 7A Simple Program (cont’d)
• test.py
Import PySide module here
Trang 8A Simple Program (cont’d)
• test.py
Inherit class “QMainWindow”
set it’s title then show itself
Trang 9A Simple Program (cont’d)
• test.py
Create MyWindow instance
Contains the main event loop
Trang 10A 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_())
Trang 11Where 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
Trang 13QWidget
in the QGroupBox?
Trang 14Let’s Put Something On It
Trang 15How 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
Trang 16SIGNAL / 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
Trang 17Exercise…
• Try to modify the simple program to MD5 Encrypter
Trang 18Exercise… (cont’d)
• You need import hashlib first
Trang 19Use 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)
Trang 20Much Better Than Excel…
• Source code: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html
Trang 21Something 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)
Trang 22Create Your Own GUI App!
Trang 23Summary
• 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
Trang 25Thanks for your attention