You are on page 1of 25

Lập trình Python GUI với PySide

Việt hóa bởi: Chien Proger


http://chienproger.wordpress.com
http://facebook.com/chienproger
CLI vs. GUI
CLI(Command Line Interface) GUI(Graphical User Interface)

• Chiếm ít tài nguyên. • Dễ dàng hơn cho người


• Người dùng có nhiều quyền dùng khi tương tác với ứng
xử lý hệ thống. dụng.
• Chỉ việc gõ 1 vài dòng để • Có khả năng đa nhiệm.
thực hiện một việc.
Về Python + GUI
Một số thư viện GUI cho Python:
 Tkinter: Gói thư viện GUI chuẩn của Python(Tcl/Tk)
 wxPython: Module mở rộng của Python nằm trong thư viện wxWidgets.
 PyQt4: Phần liên kết của Python với nền tảng của bộ công cụ GUI Qt. (có
phí)
 PySide: Giống như PyQt4 nhưng miễn phí.

Qt và wxWidgets được biết đến là thư viện GUI


của C++:
 Miễn phí và mã nguồn mở.
 Là nền tảng cho nhiều thư viện khác và hỗ trợ Unicode.
 Có đầy đủ tài liệu hướng dẫn và cộng đồng hỗ trợ.
Tại sao dùng Qt/PySide?
• Ưu điểm:
– Không dùng kiểu MFC (kiểu code được dùng trong Visual
Studio)
– Xây dựng dễ dàng với QtDesigner hoặc code văn bản.
– Kỹ thuật trực giác SIGNAL/SLOT.
– Hỗ trợ I18N (Chuẩn quốc tế).
– LGPL. (GNU Lesser General Public License)
– API mang tính Python nhiều hơn (Pythonic).
• Nhược điểm:
– Qt không được viết trong thư viện chuẩn C++.
– Dung lượng ứng dụng lớn.
– Blah blah blah… Tôi không quan tâm, còn
bạn?
Trước khi bắt đầu…
• Cài đặt Python(what?!)
- http://www.python.org/download
- Người dùng cần chú ý so sánh giữa phiên bản 2.7.x vs. 3.x.
• Cài đặt Qt:
- http://qt-project.org/downloads
- Bản mới nhất là 5.0.
• Cài đặt PySide:
- http://qt-project.org/wiki/PySideDownloads
- Bản hiện tại là 1.1.2, nhưng bản được dùng nhiều nhất là
1.0.7.
Một chương trình đơn giản
• test.py - Kiểu hướng đối tượng

Rất dễ dàng!
Một chương trình đơn giản
• test.py
import module PySide
Một chương trình đơn giản
• test.py

Kế thừa lớp QMainWindow

Đặt tiêu đề và hiện cửa sổ


Một chương trình đơn giản
• test.py

Hàm main lặp sự kiện


Tạo ví dụ MyWindow
Một chương trình đơn giản
• test.py
Thực ra cách đơn giản
nhất là:

Phần kích hoat khi chạy test.py


Còn vấn đề gì nữa?
• Giống với HD, bạn phải định dạng trước khi dùng vào dữ liệu
của mình:
– HDCửa sổ hiện tại.
– Định dạngQLayout.
– Dữ liệuQwidget.

• QLayout và QWidget là 2
class cơ bản nhất để tạo nên
GUI của bạn.

QMainWindow là 1 lớp con của Qwidget


Hình bên mô tả cấu hình mặc định.
QtLayout
• Thực tế, bạn ko cần phải bắt đầu với QLayout, có nhiều cách
bố trí tiền thiết kế, dùng trực tiếp chúng có thể là đủ!
QWidget
• Ví dụ: Suy nghĩ: Cài đặt layout
trong QGroupBox là gì?
Hãy thêm chút "mắm muối"!
Làm sao để chạy nó?
• Giờ bạn đã có “bộ da” cho ứng dụng của mình. Hãy làm nó hoạt động!
Ví dụ: Bấm nút “Big” sau đó đánh “Bigger” vào cửa sổ soạn thảo.
Tác động Phản hồi
• Trong Qt, Tác động & Phản hồi được gọi là SIGNAL & SLOT
SIGNAL/SLOT
• self.btn1.clicked.connect(self.typebig)
– Cải tiến của SIGNAL/SLOT là người gọi ko cần biết bất cứ
thông tin gì về người nhận và ngược lại.
– Tất cả các hàm đều có thể là SLOT.
– Một hàm có thể kết nối vài SLOT với 1 SIGNAL và ngược
lại.
• Thường dùng: Kiểm tra thời gian thực cho các phần
đầu vào.
Thực hành…
• Chuyển đổi chương trình đơn giản sang MD5
Encrypter.
Thực hành…
• Bạn cần import hashlib trước tiên:
Sử dụng module nâng cao
• Matplotlib: Một thư viện vẽ của Python.(Dựa trên PySide!)
• SciPy: Một thư viện các công cụ nguồn mở về khoa học cho
Python.
• VTK: Visual Tool Kit (TVTK, Mayavi)
Tốt hơn excel nhiều!
• Mã nguồn: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html
Tiếp tục mọi việc
• Trang trí:
- Thêm phần nâng cao như: groups, tabs, tooltips, …, etc.
- Thêm nhiều icon, âm thanh or vài hiệu ứng…
• Duy trì:
– Sửa lỗi, sử lỗi và sửa lỗi.
• Đóng gói/Phát hành:
- PyInstaller - Cross platform
- cx_Freeze - Cross platform
- py2exe - Window only
Tạo chương trình GUI của bạn!
• Mô hình – Xem – Quản lý
• Công cụ tự động
• Lập trình phân loại
• Quản lý dữ liệu
• Đa phương tiện
• Phần mềm CAD
• Hệ nhúng
• Ứng dụng web
• Games
• …..
Tổng kết
• Lập trình GUI giúp bạn tác động/điều khiển ứng dụng và báo
cáo dữ liệu cuối cùng nhìn thấy được. Các lập trình viên nên
quen với khái niệm đơn giản của nó.
• Lập trình trong PySide = Lập trình trong OOP. Tất cả các thành
phần của thư viện có thể dễ dàng đáp ứng và sửa đổi. Cố
gắng dùng chúng nhiều nhất có thể!
• Có rất nhiều hàm "rực rỡ" giống như đồ họa, hoạt hình, kéo
và thả... cho lập trình GUI. Bạn có thể làm tăng kinh nghiệm
lập trình bằng chúng, nhưng hãy nhớ dành sự chú ý nhiều
hơn vào việc thực hiện ứng dụng của riêng bạn.
Tham khảo
Xin cảm ơn sự quan tâm của các bạn

(Slide được trình chiếu ngày 04/03/2013 bởi BigLittle)

You might also like