Lập trình giao diện Python
Python cung cấp các tùy chọn khác nhau để phát triển giao diện người dùng đồ họa (GUI). Quan trọng nhất được liệt kê dưới đây. Show
Lập trình Tkinter trong PythonTkinter là thư viện GUI tiêu chuẩn cho Python. Tkinter trong Python cung cấp một cách nhanh chóng và dễ dàng để tạo các ứng dụng GUI. Tkinter cung cấp giao diện hướng đối tượng cho bộ công cụ Tk GUI. Sau đây là các bước để tạo một ứng dụng Tkinter:
Ví dụ:
Kết quả: CÁC WIDGETS CỦA TKINTER PYTHONTkinter cung cấp nhiều bảng điều khiển khác nhau được sử dụng trong một ứng dụng GUI như các nút, nhãn và hộp kiểm,.... Những bảng điều khiển này thường được gọi là widget. Hiện tại có 15 kiểu widget trong Tkinter. Các tiện ích này được liệt kê trong bảng dưới đây: STT Mô tả 1 Button: Tiện ích Button được sử dụng để hiển thị các nút trong ứng dụng 2 Canvas: Sử dụng để vẽ các hình dạng, chẳng hạn như đường thẳng, hình bầu dục, đa giác và hình chữ nhật, trong ứng dụng của bạn. 3 Checkbutton: sử dụng để hiển thị một số tùy chọn dưới dạng hộp kiểm. Người dùng có thể chọn nhiều tùy chọn cùng một lúc. 4 Entry: được sử dụng để hiển thị trường văn bản một dòng để chấp nhận các giá trị từ người dùng. 5 Frame: được sử dụng như một widget vùng chứa để sắp xếp các widget khác. 6 Label: được sử dụng để cung cấp chú thích một dòng cho các tiện ích con khác. Nó cũng có thể chứa hình ảnh. 7 Listbox: được sử dụng để cung cấp danh sách các tùy chọn cho người dùng. 8 Menubutton: được sử dụng để hiển thị các menu trong ứng dụng của bạn. 9 Menu:được sử dụng để cung cấp các lệnh khác nhau cho người dùng. Các lệnh này được chứa bên trong Menubutton. 10 Message:được sử dụng để hiển thị các trường văn bản nhiều dòng để chấp nhận các giá trị từ người dùng. 11 Radiobutton: được sử dụng để hiển thị một số tùy chọn dưới dạng các nút radio. Người dùng chỉ có thể chọn một tùy chọn tại một thời điểm. 12 Scale: được sử dụng để cung cấp tiện ích con trượt. 13 Scrollbar: được sử dụng để thêm khả năng cuộn vào các tiện ích con khác nhau, chẳng hạn như hộp danh sách. 14 Text: được sử dụng để hiển thị văn bản trong nhiều dòng. 15 Toplevel: được sử dụng để cung cấp một vùng chứa cửa sổ riêng biệt. 16 Spinbox: Tiện ích Spinbox là một biến thể của tiện ích Tkinter Entry tiêu chuẩn, có thể được sử dụng để chọn từ một số giá trị cố định. 17 PanedWindow: PanedWindow là một widget vùng chứa có thể chứa bất kỳ số lượng ngăn nào, được sắp xếp theo chiều ngang hoặc chiều dọc. 18 LabelFrame: Labelframe là một tiện ích chứa đơn giản. Mục đích chính của nó là hoạt động như một bộ đệm hoặc vùng chứa cho các bố cục cửa sổ phức tạp 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 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 DesignerNhư 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:
Đơ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é 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 0 nhé. Sau đó nhấn CreateChắ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:
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 8 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 ý:
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:
9 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
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
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
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:
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:
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é
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é
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ếtVì đâ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 <3 |