SlideShare une entreprise Scribd logo
1  sur  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)
• 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)

Contenu connexe

Tendances

Cach giai bai tap ham de quy minh tim duoc
Cach giai bai tap ham de quy minh tim duocCach giai bai tap ham de quy minh tim duoc
Cach giai bai tap ham de quy minh tim duochcmavano
 
Chuong12
Chuong12Chuong12
Chuong12na
 
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngChuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngThắng Nguyễn
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngHuyen Pham
 
Bo de-thi-va-loi-giai-xac-xuat-thong-ke
Bo de-thi-va-loi-giai-xac-xuat-thong-keBo de-thi-va-loi-giai-xac-xuat-thong-ke
Bo de-thi-va-loi-giai-xac-xuat-thong-keNam Cengroup
 
bảng tra phân phối chuẩn
bảng tra phân phối chuẩnbảng tra phân phối chuẩn
bảng tra phân phối chuẩnRuc Trương
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánNgo Trung
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên nataliej4
 
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tả
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tảSuy diễn thống kê và ngôn ngữ R (3): Thống kê mô tả
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tảTài Tài
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttanhhuycan83
 
Bai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocBai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocLê Ngọc Huyền
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramHuy Vũ
 
phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson caovanquy
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tínhPham Huy
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhCao Toa
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựAskSock Ngô Quang Đạo
 

Tendances (20)

Bài giảng excel 2010
Bài giảng excel 2010Bài giảng excel 2010
Bài giảng excel 2010
 
Cach giai bai tap ham de quy minh tim duoc
Cach giai bai tap ham de quy minh tim duocCach giai bai tap ham de quy minh tim duoc
Cach giai bai tap ham de quy minh tim duoc
 
Chuong12
Chuong12Chuong12
Chuong12
 
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngChuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
Bo de-thi-va-loi-giai-xac-xuat-thong-ke
Bo de-thi-va-loi-giai-xac-xuat-thong-keBo de-thi-va-loi-giai-xac-xuat-thong-ke
Bo de-thi-va-loi-giai-xac-xuat-thong-ke
 
Lập trình Python cơ bản
Lập trình Python cơ bảnLập trình Python cơ bản
Lập trình Python cơ bản
 
bảng tra phân phối chuẩn
bảng tra phân phối chuẩnbảng tra phân phối chuẩn
bảng tra phân phối chuẩn
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tả
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tảSuy diễn thống kê và ngôn ngữ R (3): Thống kê mô tả
Suy diễn thống kê và ngôn ngữ R (3): Thống kê mô tả
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Bai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocBai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hoc
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagram
 
phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tính
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 

En vedette

Chuyen de flask -- pythonvietnam.info
Chuyen de flask  -- pythonvietnam.info Chuyen de flask  -- pythonvietnam.info
Chuyen de flask -- pythonvietnam.info Khánh Nguyễn
 
Slide Python Bai 2 pythonvietnam.info
Slide Python Bai 2   pythonvietnam.infoSlide Python Bai 2   pythonvietnam.info
Slide Python Bai 2 pythonvietnam.infoKhánh Nguyễn
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUIHa Bogay
 
Bottle web framwork for python
Bottle web framwork for pythonBottle web framwork for python
Bottle web framwork for pythonKhánh Nguyễn
 
Python Beginner Class day-10-class
Python Beginner Class day-10-classPython Beginner Class day-10-class
Python Beginner Class day-10-classKhánh Nguyễn
 
Python Beginner Class day-09-fileio
Python Beginner Class day-09-fileioPython Beginner Class day-09-fileio
Python Beginner Class day-09-fileioKhánh Nguyễn
 
Bai 1 pythonvietnam.info
Bai 1   pythonvietnam.infoBai 1   pythonvietnam.info
Bai 1 pythonvietnam.infoKhánh Nguyễn
 
Python Beginner Class day-03-flow
Python Beginner Class day-03-flowPython Beginner Class day-03-flow
Python Beginner Class day-03-flowKhánh Nguyễn
 
Python Beginner Class day-07-08-module
Python Beginner Class day-07-08-modulePython Beginner Class day-07-08-module
Python Beginner Class day-07-08-moduleKhánh Nguyễn
 
Python Beginner Class day-04-05-06-iterations
Python Beginner Class day-04-05-06-iterationsPython Beginner Class day-04-05-06-iterations
Python Beginner Class day-04-05-06-iterationsKhánh Nguyễn
 
Python Beginner Class day-02-strings
Python Beginner Class day-02-stringsPython Beginner Class day-02-strings
Python Beginner Class day-02-stringsKhánh Nguyễn
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databaseKhánh Nguyễn
 
Tính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpTính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpChien Dang
 
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộc
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộcTính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộc
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộcChien Dang
 
Tính toán khoa học - Chương 0: Introduction
Tính toán khoa học - Chương 0: IntroductionTính toán khoa học - Chương 0: Introduction
Tính toán khoa học - Chương 0: IntroductionChien Dang
 
toán kinh tế hungary
toán kinh tế  hungary toán kinh tế  hungary
toán kinh tế hungary langtukju_1088
 
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tínhNguyen Ngoc Binh Phuong
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Chien Dang
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhChien Dang
 

En vedette (20)

Chuyen de flask -- pythonvietnam.info
Chuyen de flask  -- pythonvietnam.info Chuyen de flask  -- pythonvietnam.info
Chuyen de flask -- pythonvietnam.info
 
Slide Python Bai 2 pythonvietnam.info
Slide Python Bai 2   pythonvietnam.infoSlide Python Bai 2   pythonvietnam.info
Slide Python Bai 2 pythonvietnam.info
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUI
 
Bottle web framwork for python
Bottle web framwork for pythonBottle web framwork for python
Bottle web framwork for python
 
Python Beginner Class day-10-class
Python Beginner Class day-10-classPython Beginner Class day-10-class
Python Beginner Class day-10-class
 
Python Beginner Class day-09-fileio
Python Beginner Class day-09-fileioPython Beginner Class day-09-fileio
Python Beginner Class day-09-fileio
 
Pbc day-01-introduction
Pbc day-01-introductionPbc day-01-introduction
Pbc day-01-introduction
 
Bai 1 pythonvietnam.info
Bai 1   pythonvietnam.infoBai 1   pythonvietnam.info
Bai 1 pythonvietnam.info
 
Python Beginner Class day-03-flow
Python Beginner Class day-03-flowPython Beginner Class day-03-flow
Python Beginner Class day-03-flow
 
Python Beginner Class day-07-08-module
Python Beginner Class day-07-08-modulePython Beginner Class day-07-08-module
Python Beginner Class day-07-08-module
 
Python Beginner Class day-04-05-06-iterations
Python Beginner Class day-04-05-06-iterationsPython Beginner Class day-04-05-06-iterations
Python Beginner Class day-04-05-06-iterations
 
Python Beginner Class day-02-strings
Python Beginner Class day-02-stringsPython Beginner Class day-02-strings
Python Beginner Class day-02-strings
 
Python Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-databasePython Beginner Class day-11-12-13-database
Python Beginner Class day-11-12-13-database
 
Tính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpTính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớp
 
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộc
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộcTính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộc
Tính toán khoa học - Chương 7: Các phương pháp cực tiểu hóa không ràng buộc
 
Tính toán khoa học - Chương 0: Introduction
Tính toán khoa học - Chương 0: IntroductionTính toán khoa học - Chương 0: Introduction
Tính toán khoa học - Chương 0: Introduction
 
toán kinh tế hungary
toán kinh tế  hungary toán kinh tế  hungary
toán kinh tế hungary
 
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính
[Toán kinh tế ứng dụng] Bài 1: Hàm tuyến tính
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
 

Similaire à Lập trình Python GUI vs PySide

Itlc2015
Itlc2015Itlc2015
Itlc2015Huy Do
 
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...VTrung46
 
Hướng dẫn cài đặt & sử dụng git, github
Hướng dẫn cài đặt & sử dụng git, githubHướng dẫn cài đặt & sử dụng git, github
Hướng dẫn cài đặt & sử dụng git, githubnukeviet
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Thien Ta
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 
Php day 2011 - Nukeviet
Php day 2011 -  NukevietPhp day 2011 -  Nukeviet
Php day 2011 - NukevietQuang Anh Le
 
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?ITguru.vn
 
OpenWIPS-ng report Vietnamese
OpenWIPS-ng report VietnameseOpenWIPS-ng report Vietnamese
OpenWIPS-ng report VietnameseHoàng Tuấn Lê
 
Macromedia director lingo
Macromedia director lingoMacromedia director lingo
Macromedia director lingotminhanhy
 
Bai gianglingofinal
Bai gianglingofinalBai gianglingofinal
Bai gianglingofinaltminhanhy
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênTrần Thiên Đại
 
Introduction to python 20110917
Introduction to python   20110917Introduction to python   20110917
Introduction to python 20110917AiTi Education
 
Giao trinh-php
Giao trinh-phpGiao trinh-php
Giao trinh-phphieusy
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnhsilverclaw
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake phplaonap166
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Levis Nickaster
 

Similaire à Lập trình Python GUI vs PySide (20)

Itlc2015
Itlc2015Itlc2015
Itlc2015
 
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
 
Hướng dẫn cài đặt & sử dụng git, github
Hướng dẫn cài đặt & sử dụng git, githubHướng dẫn cài đặt & sử dụng git, github
Hướng dẫn cài đặt & sử dụng git, github
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 
Php day 2011 - Nukeviet
Php day 2011 -  NukevietPhp day 2011 -  Nukeviet
Php day 2011 - Nukeviet
 
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?
Bạn cần chuẩn bị gì khi đi phỏng vấn vị trí DevOps?
 
Subversion Seminar [2010]
Subversion Seminar [2010]Subversion Seminar [2010]
Subversion Seminar [2010]
 
Embedded Linux
Embedded LinuxEmbedded Linux
Embedded Linux
 
OpenWIPS-ng report Vietnamese
OpenWIPS-ng report VietnameseOpenWIPS-ng report Vietnamese
OpenWIPS-ng report Vietnamese
 
Macromedia director lingo
Macromedia director lingoMacromedia director lingo
Macromedia director lingo
 
Bai gianglingofinal
Bai gianglingofinalBai gianglingofinal
Bai gianglingofinal
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
 
Linux+03
Linux+03Linux+03
Linux+03
 
Introduction to python 20110917
Introduction to python   20110917Introduction to python   20110917
Introduction to python 20110917
 
Giao trinh-php
Giao trinh-phpGiao trinh-php
Giao trinh-php
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnh
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
 
Chuong2 nmth
Chuong2 nmthChuong2 nmth
Chuong2 nmth
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
 

Plus de Chien Dang

Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânTính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânChien Dang
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnChien Dang
 
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụng
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụngVật lý Laser 2013 - Chương IV: Các loại laser và ứng dụng
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụngChien Dang
 
Vật lý Laser 2013 - Chương III: Phát xạ Laser
Vật lý Laser 2013 - Chương III: Phát xạ LaserVật lý Laser 2013 - Chương III: Phát xạ Laser
Vật lý Laser 2013 - Chương III: Phát xạ LaserChien Dang
 
Vật lý Laser 2013- Chương II: Khuếch đại Laser
Vật lý Laser 2013- Chương II: Khuếch đại LaserVật lý Laser 2013- Chương II: Khuếch đại Laser
Vật lý Laser 2013- Chương II: Khuếch đại LaserChien Dang
 
Vật lý Laser 2013 - Chương I: Photon và Nguyên tử
Vật lý Laser 2013 - Chương I: Photon và Nguyên tửVật lý Laser 2013 - Chương I: Photon và Nguyên tử
Vật lý Laser 2013 - Chương I: Photon và Nguyên tửChien Dang
 
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhTính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhChien Dang
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabChien Dang
 

Plus de Chien Dang (9)

Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânTính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
 
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụng
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụngVật lý Laser 2013 - Chương IV: Các loại laser và ứng dụng
Vật lý Laser 2013 - Chương IV: Các loại laser và ứng dụng
 
Vật lý Laser 2013 - Chương III: Phát xạ Laser
Vật lý Laser 2013 - Chương III: Phát xạ LaserVật lý Laser 2013 - Chương III: Phát xạ Laser
Vật lý Laser 2013 - Chương III: Phát xạ Laser
 
Vật lý Laser 2013- Chương II: Khuếch đại Laser
Vật lý Laser 2013- Chương II: Khuếch đại LaserVật lý Laser 2013- Chương II: Khuếch đại Laser
Vật lý Laser 2013- Chương II: Khuếch đại Laser
 
Vật lý Laser 2013 - Chương I: Photon và Nguyên tử
Vật lý Laser 2013 - Chương I: Photon và Nguyên tửVật lý Laser 2013 - Chương I: Photon và Nguyên tử
Vật lý Laser 2013 - Chương I: Photon và Nguyên tử
 
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhTính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn Matlab
 
Projection
ProjectionProjection
Projection
 

Lập trình Python GUI vs PySide

  • 1. 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
  • 2. 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.
  • 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ù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?
  • 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ả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.
  • 17. Thực hành… • Chuyển đổi chương trình đơn giản sang MD5 Encrypter.
  • 18. Thực hành… • Bạn cần import hashlib trước tiên:
  • 19. 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)
  • 20. Tốt hơn excel nhiều! • Mã nguồn: http://matplotlib.org/examples/pylab_examples/demo_agg_filter.html
  • 21. 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
  • 22. 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 • …..
  • 23. 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.
  • 25. 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)