Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
1,32 MB
Nội dung
Python GUI programming with PySide Speaker: BigLittle Date: 2013/03/04 CLI vs GUI CLI (Command Line Interface) GUI (Graphical User Interface) • Take less resources • User have much more control of their system • Only need to execute few line to perform a task • 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 object oriented programming styles Just so easy! 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 Contains the main event loop Create MyWindow instance 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 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 don’t need to start from QLayout itself There are many pre-designed layout Use them directly should be enough QHBoxLayout QGridLayout QVBoxLayout 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 trigger response • In Qt, trigger & response are called SIGNAL & SLOT 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 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: CurveExpert (PyInstaller) • Debug, debug and debug • Packing/Release: • PyInstaller - Cross platform • cx_Freeze - Cross platform • py2exe - Window only 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 ... 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. .. 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... GUI App! • • • • • • • • • • Model-View-Controller Automation Tool Distributed Programming Database Management Multimedia CAD Software Embedded System Web Application Games …… Summary • GUI programming