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

Lập trình Python GUI vs PySide

  • 1.
    Lập trình PythonGUI với PySide Việt hóa bởi: Chien Proger http://chienproger.wordpress.com http://facebook.com/chienproger
  • 2.
    CLI vs. GUI CLI(CommandLine 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.
  • 3.
    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ợ.
  • 4.
    Tại sao dùngQt/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?
  • 5.
    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.
  • 6.
    Một chương trìnhđơn giản • test.py - Kiểu hướng đối tượng Rất dễ dàng!
  • 7.
    Một chương trìnhđơn giản • test.py import module PySide
  • 8.
    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ổ
  • 9.
    Một chương trìnhđơn giản • test.py Hàm main lặp sự kiện Tạo ví dụ MyWindow
  • 10.
    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
  • 11.
    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.
  • 12.
    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à đủ!
  • 13.
    QWidget • Ví dụ:Suy nghĩ: Cài đặt layout trong QGroupBox là gì?
  • 14.
    Hãy thêm chút"mắm muối"!
  • 15.
    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
  • 16.
    SIGNAL/SLOT • self.btn1.clicked.connect(self.typebig) – Cảitiế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.
  • 17.
    Thực hành… • Chuyểnđổi chương trình đơn giản sang MD5 Encrypter.
  • 18.
    Thực hành… • Bạncần import hashlib trước tiên:
  • 19.
    Sử dụng modulenâ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)
  • 20.
    Tốt hơn excelnhiều! • Mã nguồn: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html
  • 21.
    Tiếp tục mọiviệ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
  • 22.
    Tạo chương trìnhGUI 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 • …..
  • 23.
    Tổng kết • Lậptrì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.
  • 24.
  • 25.
    Xin cảm ơnsự quan tâm của các bạn  (Slide được trình chiếu ngày 04/03/2013 bởi BigLittle)