SlideShare uma empresa Scribd logo
1 de 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)

Mais conteúdo relacionado

Mais procurados

Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuMasterCode.vn
 
blockchain-theme-powerpoint-templates.pptx
blockchain-theme-powerpoint-templates.pptxblockchain-theme-powerpoint-templates.pptx
blockchain-theme-powerpoint-templates.pptxTrngiNhi
 
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty Bluesky
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty BlueskyPhân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty Bluesky
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty BlueskyDịch vụ Làm Luận Văn 0936885877
 
Báo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởBáo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởThuyet Nguyen
 
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnKĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnNguyen Thieu
 
Cách tạo chân linh kiện trong Orcad Layout P1
Cách tạo chân linh kiện trong Orcad Layout P1Cách tạo chân linh kiện trong Orcad Layout P1
Cách tạo chân linh kiện trong Orcad Layout P1Vuong Do
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàngAn Nguyen
 
Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Tạ Thành Đạt
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiUDCNTT
 
Hướng dan su dung packet tracer
Hướng dan su dung packet tracerHướng dan su dung packet tracer
Hướng dan su dung packet tracerDuc Nguyen
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlabPhạmThế Anh
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Mr Giap
 
đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155nataliej4
 

Mais procurados (20)

Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệu
 
blockchain-theme-powerpoint-templates.pptx
blockchain-theme-powerpoint-templates.pptxblockchain-theme-powerpoint-templates.pptx
blockchain-theme-powerpoint-templates.pptx
 
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đĐề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
 
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
 
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty Bluesky
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty BlueskyPhân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty Bluesky
Phân tích thiết kế hệ thống thông tin quản lý khách hàng tại công ty Bluesky
 
Luận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAYLuận văn: Bài toán nhận dạng biển số xe, HAY
Luận văn: Bài toán nhận dạng biển số xe, HAY
 
Báo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mởBáo cáo môn mã nguồn mở
Báo cáo môn mã nguồn mở
 
Chuong 1
Chuong 1Chuong 1
Chuong 1
 
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnKĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
 
Cách tạo chân linh kiện trong Orcad Layout P1
Cách tạo chân linh kiện trong Orcad Layout P1Cách tạo chân linh kiện trong Orcad Layout P1
Cách tạo chân linh kiện trong Orcad Layout P1
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàng
 
Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osi
 
Hướng dan su dung packet tracer
Hướng dan su dung packet tracerHướng dan su dung packet tracer
Hướng dan su dung packet tracer
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlab
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
 
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đĐề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
 
đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155
 
Đề tài: Áp dụng Design Pattern trong phát triển phần mềm, 9đ
Đề tài: Áp dụng Design Pattern trong phát triển phần mềm, 9đĐề tài: Áp dụng Design Pattern trong phát triển phần mềm, 9đ
Đề tài: Áp dụng Design Pattern trong phát triển phần mềm, 9đ
 

Destaque

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
 

Destaque (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
 

Semelhante a 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ê
 
Bai gianglingofinal
Bai gianglingofinalBai gianglingofinal
Bai gianglingofinaltminhanhy
 
Macromedia director lingo
Macromedia director lingoMacromedia director lingo
Macromedia director lingotminhanhy
 
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
 

Semelhante a 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
 
Bai gianglingofinal
Bai gianglingofinalBai gianglingofinal
Bai gianglingofinal
 
Macromedia director lingo
Macromedia director lingoMacromedia director lingo
Macromedia director lingo
 
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 đủ)
 

Mais 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
 

Mais 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)