Hướng dẫn app using python - ứng dụng sử dụng python

Đã đăng vào thg 9 27, 2017 2:54 SA 2 phút đọc 2 phút đọc

Bài hướng dẫn này mình sử dụng microframework Flask làm web app. Những framework khác của Python như Django, Pyramid, Tornado ... có thể làm tương tự. Máy tính client để mình code chạy trên Ubuntu 16.04 cùng với Python 2.7.12.

Chuẩn bị

Trước khi chạy và deploy ứng dụng Python web, bạn cần phải chuẩn bị

  1. Sử dụng Cloud Platform để tạo mới Cloud Platform project. Tạo mới một App Engine application và tất nhiên là enable billing tại: Consle Cloud Google

  2. Cài đặt một số tool cần thiết:

  • Git
  • Google Cloud SDK

Tạo web Flask đơn giản

Ở bài hưởng dẫn này, mình sẽ tạo một web đơn giản. Nó sẽ in ra dòng

sudo pip install virtualenv
9

Đầu tiên, tạo một thư mục project

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
0. Trong thư mực project, ta sẽ tạo lần lượt các file:

  • main.py: chạy web
  • requirements.txt: quản lý lib python
  • app.yaml: cấu hình deploy và chạy code trên Google App Engine

Tạo một file

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
1 có nội dung như sau:

import logging

from flask import Flask


app = Flask[__name__]


@app.route['/']
def hello[]:
    """Return a friendly HTTP greeting."""
    return 'Hello World!'


@app.errorhandler[500]
def server_error[e]:
    logging.exception['An error occurred during a request.']
    return """
    An internal error occurred: 
{}
See logs for full stacktrace. """
.format[e], 500 if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run[host='127.0.0.1', port=8080, debug=True]

Tạo một file

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
2 để quản lý các gói

Flask==0.12.2
gunicorn==19.7.1

Tiếp theo, bạn chạy thử ứng dụng:

  1. Nếu bạn không có
    virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    3 bạn có thể cài đặt chúng qua pip
sudo pip install virtualenv
  1. Tạo môi trường cô lập và cài đặt các gói cần thiết
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
  1. Chạy thử
python main.py
  1. Trên trình duyệt, gõ địa chỉ:
//localhost:8080

Deploy

Trước khi deploy, bạn cần tạo một file

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
4 để cấu hình việc deploy

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 2

Điểm chú ý ở đây là

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
5.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
6 là tên môi trường mà web app sẽ chạy trên đó. Thông tin cụ thể bạn có thể vào đây: //cloud.google.com/appengine/docs/flexible/

OK. Tiếp theo là việc deploy.

  1. virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    7 tới thư mục project
    virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    0. Sau đó, gõ lệnh deploy:
gcloud app deploy

Sau khi bạn cài đặt xong Google Cloud SDK bạn có thể sử dụng CLI

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
9 để thực hiện deloy app

  1. Trên browser bạn có thể xem kết quả của bạn tại
    python main.py
    
    0. Hoặc có thể sử dụng
    virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    9:
gcloud app browse

Đã hoàn thành!!

Điểm mấu chốt của bài hướng dẫn

  • Tạo được project trên Goold App Engine
  • Cài được CLI
    virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    9 tools
  • Có một web app Python: tất nhiên rồi
  • Chú ý cấu hình trên
    virtualenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
    4 file.

Chúc bạn thành công !!!

All rights reserved

Nếu như bạn đã quá quen thuộc với nhưng công nghệ làm ứng dụng Desktop kinh điển như Winform, WPF [C#] hay Swing, JavaFx [Java] và nghĩ rằng Python chỉ để làm AI hay Data science thì bạn đã sai. Trong bài viết này chúng ta sẽ cùng đi xây dựng một ứng dụng Desktop trên ngôn ngữ Python và giao diện xịn xò không kém những công nghệ của C# hay Java nhé.

Chúng ta sẽ sử dụng

python main.py
4 - một thư viện cho phép bạn sử dụng Qt GUI, một framework rất nổi tiếng của C++. Chúng ta sẽ cùng đi tìm hiểu qua các bước:

1. Tìm hiểu, cách cài đặt PyQt5 và công cụ Qt Designer

2. Thực hành ngay với ví dụ "Ứng dụng tính tiền cho phòng khám"

2.1. Xây dựng giao diện bằng Qt Designer

2.2. Xây dựng Back-end.

Ok bắt đầu thôi nào 

1. Cài đặt PyQt5 và công cụ Qt Designer

Như mình đã đề cập ở trên, PyQt là một thư viện cho phép bạn sử dụng Qt GUI, một framework rất nổi tiếng của C++. PyQt có nhiều phiên bản nhưng gần đây nhất và được hỗ trợ nhiều nhất là PyQt5. Tiến hành cài đặt nó thôi nào:

python -m pip install PyQt5 
# pip install PyQt5

Đơn giản vậy thôi. Nhưng ... để thiết kế nên một giao diện mà code thủ công thì rất khó khăn nên chúng ta có một công cụ hỗ trợ kéo thả rất tuyệt vời là Qt Designer. Các bạn có thể tải về và cài đặt tại đây: DownloadQtDesigner

Okey vậy là chúng đã đã đủ vũ khí, cùng chinh chiến ngay với một ví dụ thực tế: "Phần mềm tính tiền cho phòng khám" nhéPhần mềm tính tiền cho phòng khám" nhéPhần mềm tính tiền cho phòng khám" nhé

2. Thực hành "Xây dựng Ứng dụng tính tiền cho phòng khám"

2.1 Xây dựng giao diện bằng Qt Designer

Đầu tiên chúng ta sẽ mở Qt Designer lên và ngắm nghía một chút nhé

Ở giao diện này họ yêu cầu chúng ta chọn template - mọi người chọn

Flask==0.12.2
gunicorn==19.7.1
00 nhé. Sau đó nhấn Create

Chắc hẵn những bạn đã từng làm quen với Winform sẽ khá quen thuộc với giao diện này. Vẫn là 3 phần chính với bên trái là các Widget, ở giữa là giao diện xem trước và bên phải là tùy chỉnh các thuộc tính Property. Bây giờ hãy tưởng tượng ra trong đầu mình một giao diện và kéo thả theo ý mình nhé.

Đây là giao diện mình làm qua. Giải thích một tí nhé. Những Widget mà mình sử dụng:

  • Flask==0.12.2
    gunicorn==19.7.1
    
    01: Dùng để hiển thị nội dụng text đơn thuần. Double click để chỉnh sửa nội dung.
  • Flask==0.12.2
    gunicorn==19.7.1
    
    02: Dùng để nhóm các Widget có cùng mục đích lại với nhau.
  • Flask==0.12.2
    gunicorn==19.7.1
    
    03: Dùng để nhập dữ liệu dạng 1 dòng [tương tự thẻ trong HTML].
  • Flask==0.12.2
    gunicorn==19.7.1
    
    04: Dùng để người dùng chọn các nội dung có sẵn. Các bạn double click vào để thêm các item lựa chọn.
  • Flask==0.12.2
    gunicorn==19.7.1
    
    05: Cho phép người dụng chọn hoặc bỏ chọn 1 nội dung. Double click để chỉnh sửa label
  • Flask==0.12.2
    gunicorn==19.7.1
    
    06: Tương tự như Line Edit nhưng chỉ được phép nhập số.
  • Flask==0.12.2
    gunicorn==19.7.1
    
    07: Đơn giản là một cái nút nhấn. Double click để chỉnh sửa nội dung

Trên đây là những widget cơ bản của Qt, còn rất nhiều những widget hay ho khác, các bạn có thể tự tìm hiểu nhé. Đặc biệt là các widget trong nhóm

Flask==0.12.2
gunicorn==19.7.1
08 sẽ giúp các widget trên ứng dụng bạn co giãn tùy theo kích cỡ window.

*Lưu ý:

  • Các bạn có thể click vào Window bao ngoài và chỉnh sửa WindowTitle để thay đổi title cửa sổ
  • Đối với các Widget chúng ta cần truy xuất ở phần Back-end để xử lí thì các bạn nên thay đổi thuộc tính objectName để dễ dàng xử lí và gọi tên.

Cuối cùng là Ctrl + R để xem lại giao diện nhé:

Bước cuối cùng để tạo giao diện là chuyển giao diện này sang code PyQt5. Các bạn lưu file .ui này vào ProjectFolder của mình nhé

Sau đó các bạn chạy lệnh sau:

Flask==0.12.2
gunicorn==19.7.1
0
Flask==0.12.2
gunicorn==19.7.1
09 sẽ được cài đặt cùng lúc với PyQt5, là công cụ giúp chuyển file giao diện *.ui sang *.py - một chương trình hoàn chỉnh giúp render ra giao diện như ta đã thiết kế

Bây giờ các bạn hãy chạy thử chương trình mà pyuic5 vừa tạo ra. Nếu gặp lỗi như thế này thì các bạn có thể fix theo cách sau 

  1. Copy thư mục platforms của đường dẫn "C:\Python33\Lib\site-packages\PyQt5\plugins\platforms" [Mỗi phiên bản Python sẽ có đường dẫn khác nhau]C:\Python33\Lib\site-packages\PyQt5\plugins\platforms" [Mỗi phiên bản Python sẽ có đường dẫn khác nhau]C:\Python33\Lib\site-packages\PyQt5\plugins\platforms" [Mỗi phiên bản Python sẽ có đường dẫn khác nhau]
  2. Paste thư mục đó vào thư mục chứa code của chúng ta
  3. Cuối cùng thêm 2 dòng này vào trên cùng của chương trình:
    sudo pip install virtualenv
    
    1
    sudo pip install virtualenv
    
    1
    sudo pip install virtualenv
    
    1

    Bây giờ các bạn có thế chạy lại và chương trình sẽ chạy ngon :D

Vì mặc định PyQt5 sử dụng giao diện cũ nên bạn có thể thêm lệnh setStyle[] để thay đổi giao diện. Đây là full code phần giao diện

sudo pip install virtualenv
3

2.2. Xây dựng Back-End.

Tiếp theo chúng ra sẽ xây dựng phần xử lí, ở đây chúng ta sẽ xây dựng hàm tính tổng là một function thuộc lớp Ui_MainWindow. Cấu trúc để cài đặt một sự kiện như sau

sudo pip install virtualenv
4

Tất cả các Widget chúng ta sử dụng đều thành thuộc tính của class Ui_MainWindow với tên là objectName chúng ta đã đặt ở Qt Designer [Hoặc bạn củng có thể sửa phần code để đổi tên]

Vì vậy để gán một function cho sự kiện click ta thêm dòng này cuối method setupUi:

sudo pip install virtualenv
5

Với calcBtn là tên đối tượng nút nhấn và calcTotal là tên hàm xử lí nằm cùng class

Vì các Widget đều là thuộc tính của class Ui_MainWindow nên ta có thể dễ dàng lấy dữ liệu ra bằng cách:

sudo pip install virtualenv
6

Và đây là kết quả

Công việc cuối cùng là tính chi phí và show lên giao diện, việc xử lí khá đơn giản nên mọi người tham khảo thử nhé

sudo pip install virtualenv
7

Công việc của chúng ta đơn giản là lấy số lượng hoặc kiểm tra checkBox, sau đó là nhân với đơn giá

Mình sẽ hiển thị nội dung lên textEdit bằng phương thức setText[] như trên.

Để tăng phần sinh động mình sẽ hiện lên một thông báo chi phí bằng Widget QMessageBox nhé

sudo pip install virtualenv
8

Cuối cùng là tận hưởng ứng dụng Desktop đầu tiên viết bằng Python nào:

Tạm kết

Vì đây là một chương trình python nên bắt buộc bạn phải cài đặt python và vào chạy chương trình. Trong bài viết sau mình sẽ hướng dẫn các bạn chuyển một đoạn code.py sang .exe để thực thi ở mọi nơi nhé. Cảm ơn mọi người đã xem bài. See you next time

Link full code: source code

Bài Viết Liên Quan

Chủ Đề