Professional Documents
Culture Documents
Python-Gui-Programming-With-Pyside - (Cuuduongthancong - Com) PDF
Python-Gui-Programming-With-Pyside - (Cuuduongthancong - Com) PDF
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.
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
CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py
CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py
CuuDuongThanCong.com
A Simple Program (cont’d)
• test.py
app = QApplication(sys.argv)
main = QMainWindow()
main.setWindowTitle(“First GUI”)
main.show()
sys.exit(app.exec_())
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
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.
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.
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