lập trình python gui vs pyside

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

Upload: chien-proger

Post on 26-May-2015

3.547 views

Category:

Technology


7 download

DESCRIPTION

Slide trình bày một cách đơn giản nhất kiến thức nhập môn, tạo ra chương trình lập trình giao diện đầu tiên bằng PySide cho những người đã có kiến thức nhất định về Python.

TRANSCRIPT

Page 1: Lập trình Python GUI vs PySide

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

Việt hóa bởi: Chien Progerhttp://chienproger.wordpress.comhttp://facebook.com/chienproger

Page 2: Lập trình Python GUI vs PySide

CLI vs. GUI

CLI(Command Line Interface)

• Chiếm ít tài nguyên.• Người dùng có nhiều quyền

xử lý hệ thống.• Chỉ việc gõ 1 vài dòng để

thực hiện một việc.

GUI(Graphical User Interface)

• Dễ dàng hơn cho người dùng khi tương tác với ứng dụng.

• Có khả năng đa nhiệm.

Page 3: Lập trình Python GUI vs PySide

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

Page 4: Lập trình Python GUI vs PySide

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?

Page 5: Lập trình Python GUI vs PySide

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.

Page 6: Lập trình Python GUI vs PySide

Một chương trình đơn giản

• test.py - Kiểu hướng đối tượng

Rất dễ dàng!

Page 7: Lập trình Python GUI vs PySide

Một chương trình đơn giản

• test.py import module PySide

Page 8: Lập trình Python GUI vs 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ổ

Page 9: Lập trình Python GUI vs PySide

Một chương trình đơn giản

• test.py

Hàm main lặp sự kiệnTạo ví dụ MyWindow

Page 10: Lập trình Python GUI vs PySide

Một chương trình đơn giản

• test.pyThực ra cách đơn

giản nhất là:

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

Page 11: Lập trình Python GUI vs PySide

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:– HDCửa sổ hiện tại.– Định dạngQLayout.– Dữ liệuQwidget.

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

QMainWindow là 1 lớp con của QwidgetHình bên mô tả cấu hình mặc định.

Page 12: Lập trình Python GUI vs PySide

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à đủ!

Page 13: Lập trình Python GUI vs PySide

QWidget • Ví dụ: Suy nghĩ: Cài đặt layout

trong QGroupBox là gì?

Page 14: Lập trình Python GUI vs PySide

Hãy thêm chút "mắm muối"!

Page 15: Lập trình Python GUI vs PySide

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

Page 16: Lập trình Python GUI vs PySide

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.

Page 17: Lập trình Python GUI vs PySide

Thực hành…

• Chuyển đổi chương trình đơn giản sang MD5 Encrypter.

Page 18: Lập trình Python GUI vs PySide

Thực hành…

• Bạn cần import hashlib trước tiên:

Page 19: Lập trình Python GUI vs PySide

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)

Page 20: Lập trình Python GUI vs PySide

Tốt hơn excel nhiều!• Mã nguồn: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html

Page 21: Lập trình Python GUI vs PySide

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

Page 22: Lập trình Python GUI vs PySide

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

Page 23: Lập trình Python GUI vs PySide

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.

Page 24: Lập trình Python GUI vs PySide

Tham khảo

Page 25: Lập trình Python GUI vs PySide

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)