Xem thêm

Làm app giao diện đồ hoạ với Python

Huy Erick
Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Giao diện đồ hoạ (GUI - Graphic User Interface) luôn là một phần không thể thiếu trong lập trình. Dù bạn học ngôn...

Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng

Giao diện đồ hoạ (GUI - Graphic User Interface) luôn là một phần không thể thiếu trong lập trình . Dù bạn học ngôn ngữ lập trình nào, bạn cũng nghĩ tới việc "làm sao để có giao diện đồ hoạ".

Thời đại hiện tại, web và ứng dụng di động đã trở thành giao diện mà mọi người tương tác với người dùng, không chỉ là các phần mềm chạy trên máy tính như trước đây. Bạn có thể nghe nhạc, xem phim, chơi game, soạn thảo văn bản trực tuyến... Gần như không còn ứng dụng nào không được phát triển trên web. Vì vậy, từ góc độ "sự nghiệp", bạn nên đầu tư vào kỹ năng làm web thay vì học để tạo một ứng dụng trên máy tính như trong quá khứ.

Tuy nhiên, GUI vẫn không ngay lập tức biến mất. Vẫn còn nhu cầu sử dụng, vẫn có người dùng, vẫn có nhiều thư viện đồ hoạ tồn tại từ lâu và vẫn được tiếp tục phát triển. Có những trò chơi chỉ có thể chạy trên máy tính vì yêu cầu về hiệu năng mà web không đáp ứng được, như Half-Life, đế chế, đua xe...

Python hỗ trợ nhiều thư viện để tạo ứng dụng GUI như Qt, WxWidgets, Tkinter, Kivy (cả cho ứng dụng di động)... Xem đầy đủ tại:

  • https://docs.python.org/3/faq/gui.html
  • https://www.python.org/about/apps/#desktop-guis
  • https://docs.python-guide.org/scenarios/gui/

Qt là một nền tảng phát triển ứng dụng dùng trong công nghiệp, hỗ trợ mọi hệ điều hành phổ biến và rất mạnh mẽ. Nếu bạn muốn làm ứng dụng trên desktop với Python, hãy đầu tư vào Qt để có một sản phẩm đẳng cấp, không kém bất kỳ nền tảng nào khác.

Tkinter là một hệ thống thư viện đồ hoạ đơn giản, dễ sử dụng và chạy trên cả 3 hệ điều hành phổ biến: Windows, Ubuntu, OSX/MacOS. Điều quan trọng nhất là thư viện tkinter được cài đặt sẵn với Python, nên bạn không cần phải cài đặt thêm gì.

Bài viết này sẽ hướng dẫn tạo một chương trình đồ hoạ sử dụng tkinter với Python 3.6, thực hiện trên MacOS Sierra (10.12.6).

Khái niệm cơ bản về một chương trình giao diện đồ hoạ

Một chương trình có giao diện đồ hoạ là một chương trình luôn chạy cho tới khi người dùng thoát chương trình. Điều này có nghĩa là chương trình phải có một vòng lặp vô hạn để liên tục hiển thị giao diện (gọi là main loop). Chương trình hoạt động dựa trên tương tác của người dùng và phản ứng với các tương tác đó (ví dụ: khi nhấn nút này, chạy hàm kia). Loại chương trình như vậy thuộc mô hình "Event-driven programming".

Các thao tác của người dùng được gọi là các sự kiện (event), các hành động tương ứng của chương trình (các hàm) được gọi là các callback, được gắn vào các phần tử giao diện. Khi người dùng nhấn nút, callback sẽ được gọi.

Các phần tử giao diện như nút bấm, chữ, ô nhập ký tự được gọi là các widget.

Lập trình GUI với Tkinter

Dưới đây là một đoạn mã để tạo ứng dụng GUI với tkinter:

import tkinter as tk  class App:     def __init__(self, master):         self.master = master         self.master.title("Chương trình GUI")          self.label = tk.Label(self.master, text="Tiêu đề")         self.label.pack()          self.entry = tk.Entry(self.master)         self.entry.bind("<Return>", self.check_site)         self.entry.pack()          self.button = tk.Button(self.master, text="Check site", command=self.check_site)         self.button.pack()          self.quit_button = tk.Button(self.master, text="Quit", command=self.master.quit)         self.quit_button.pack()      def check_site(self):         url = self.entry.get()         # Kiểm tra trạng thái của trang web         pass  root = tk.Tk() app = App(root) root.mainloop()

Kết quả hiển thị sẽ là một cửa sổ có tiêu đề, một ô nhập địa chỉ trang web và một nút bấm để kiểm tra trạng thái của trang web.

Tkinter cung cấp sẵn 17 widget, bao gồm Button, Canvas, Checkbutton, Entry, Frame, Label, Listbox, Menu, Menubutton, Message, Radiobutton, Scale, Scrollbar, Text, Spinbox, LabelFrame và PanedWindow.

Trên đây là một số thông tin cơ bản về việc làm app giao diện đồ hoạ với Python. Hy vọng rằng bài viết sẽ giúp bạn hiểu thêm về chủ đề này.

Bài viết gốc được đăng tải tại pp.pymi.vn

1