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.
- Tkinter: Tkinter là giao diện Python cho bộ công cụ Tk GUI. Chúng ta sẽ học Tkinter trong chương này.
- wxPython: Đây là một giao diện Python mã nguồn mở cho wxWindows https://wxpython.org/
- JPython: JPython là một cổng Python dành cho Java, cho phép các tập lệnh Python truy cập vào các thư viện Java trên máy cục bộ https://www.jython.org/
Nội dung chính
Lập trình Tkinter trong Python
Tkinter 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:
- import Tkinter module.
- Tạo cửa sổ chính của ứng dụng GUI.
- Thêm một hoặc nhiều widget nói trên vào ứng dụng GUI.
- Gọi vòng lặp sự kiện chính để các hành động có thể diễn ra trên màn hình máy tính của người dùng.
Ví dụ:
# import Tkinter module from tkinter import * # Tạo cửa sổ chính của ứng dụng GUI top = Tk() # Gọi vòng lặp sự kiện chính để các hành động có thể diễn ra trên màn hình máy tính của người dùng top.mainloop()
Kết quả:
Các Widget của Tkinter trong Python
Có nhiều widget khác nhau như button, canvas, checkbutton, entry, ... chúng được sử dụng để xây dụng các ứng dụng GUI trong Python.
No | Button | Mô tả |
---|---|---|
1 | Button | Button được sử dụng để thêm nhiều nút khác nhau vào ứng dụng python. |
2 | Canvas | Canvas được sử dụng để vẽ các hình trên cửa sổ. |
3 | Checkbutton | Checkbutton được sử dụng để hiển thị CheckButton trên cửa sổ. |
4 | Entry | Entry được sử dụng để hiển thị trường văn bản một dòng cho người dùng. Nó thường được sử dụng để nhập các giá trị của người dùng. |
5 | Frame | Frame có thể được định nghĩa là một vùng chứa mà có thể chứa một hoặc nhiều widget khác. |
6 | Label | Label là một văn bản được sử dụng để hiển thị một số thông báo hoặc thông tin cho các widget khác. |
7 | ListBox | ListBox được sử dụng để hiển thị danh sách các tùy chọn cho người dùng. |
8 | Menubutton | Menubutton được sử dụng để hiển thị các mục menu cho người dùng. |
9 | Menu | Menu được sử dụng để thêm các mục menu cho người dùng. |
10 | Message | Message được sử dụng để hiển thị hộp tin nhắn cho người dùng. |
11 | Radiobutton | Người dùng được cung cấp các tùy chọn khác nhau và người dùng chỉ có thể chọn một tùy chọn trong số đó. |
12 | Scale | Nó được sử dụng để cung cấp thanh trượt cho người dùng. |
13 | Scrollbar | Nó cung cấp thanh cuộn cho người dùng để người dùng có thể cuộn cửa sổ lên và xuống. |
14 | Text | Nó khác với Entry vì nó cung cấp một trường văn bản nhiều dòng cho người dùng để người dùng có thể viết văn bản và chỉnh sửa văn bản bên trong nó. |
15 | Toplevel | Nó được sử dụng để tạo một vùng chứa cửa sổ riêng biệt. |
16 | Spinbox | Nó là một widget mục nhập được sử dụng để chọn từ các tùy chọn của các giá trị. |
17 | PanedWindow | Nó giống như một widget container chứa các ô ngang hoặc dọc. |
18 | LabelFrame | LabelFrame là một widget vùng chứa hoạt động như một container. |
18 | MessageBox | Nó được sử dụng để hiển thị hộp thông báo trong các ứng dụng desktop. |
Bố cục trong Python Tkinter
Python Tkinter cung cấp các phương thức để bố cục các widget sau.
- Phương thức pack()
- Phương thức grid()
- Phương thức place()
Phương thức pack() trong Python Tkinter
Phương thức pack() được sử dụng để tổ chức widget theo khối. Vị trí các widget được thêm vào ứng dụng python bằng phương thức pack() có thể được kiểm soát bằng cách sử dụng các tùy chọn khác nhau được chỉ định trong lệnh gọi phương thức.
Cú pháp:
widget.pack(options)
Các tùy chọn (options):
- expand : Nếu expand là true thì tiện ích con sẽ mở rộng để lấp đầy khoảng trống.
- Fill : Xác định xem widget con có lấp đầy bất kỳ không gian thừa nào do trình đóng gói phân bổ cho nó hay không hoặc giữ các kích thước tối thiểu của riêng nó: NONE(mặc định), X (chỉ điền theo chiều ngang), Y (chỉ điền theo chiều dọc) hay BOTH (điền theo cả chiều ngang và chiều dọc ).
- side : Nó giúp xác định vị trí của widget so với widget cha.
Ví dụ:
from tkinter import * parent = Tk() redbutton = Button(parent, text = "Red", fg = "red") redbutton.pack(side = LEFT) greenbutton = Button(parent, text = "Black", fg = "black") greenbutton.pack(side = RIGHT) bluebutton = Button(parent, text = "Blue", fg = "blue") bluebutton.pack(side = TOP) blackbutton = Button(parent, text = "Green", fg = "green") blackbutton.pack(side = BOTTOM) parent.mainloop()
Kết quả:
Phương thức grid() trong Python Tkinter
Trình quản lý layout grid() sắp xếp các widget ở dạng bảng. Chúng ta có thể chỉ định các hàng và cột. Chúng ta cũng có thể chỉ định khoảng cột (chiều rộng) hoặc chiều dài hàng (chiều cao) của widget con.
Đây là một cách có tổ chức hơn để đặt các widget vào ứng dụng python. Cú pháp để sử dụng phương thức grid() được đưa ra dưới đây.
widget.grid(options)
Dưới đây là danh sách tùy chọn của phương thức grid():
- Column: Số cột mà widget con sẽ được đặt. Cột ngoài cùng bên trái được biểu thị bằng 0.
- Columnspan: Chiều rộng của widget con. Nó đại diện cho số cột mà đến đó, cột được mở rộng.
- ipadx, ipady: Nó đại diện cho số lượng pixel cho đường viền của gidget.
- padx, pady: Nó đại diện cho số lượng pixel bên ngoài đường viền của gidget.
- row: Số hàng mà widget con sẽ được đặt. Hàng trên cùng được biểu thị bằng 0.
- rowspan: Chiều cao của widget con, tức là số hàng mà tiện ích con được mở rộng.
- Sticky: Nếu ô lớn hơn một widget, thì Sticky được sử dụng để chỉ định vị trí của widget bên trong ô. Nó có thể là sự ghép nối của các chữ cái sticky đại diện cho vị trí của widget. Nó có thể là N, E, W, S, NE, NW, NS, EW, ES.
Ví du:
from tkinter import * parent = Tk() name = Label(parent, text = "Name").grid(row = 0, column = 0) e1 = Entry(parent).grid(row = 0, column = 1) password = Label(parent, text = "Password").grid(row = 1, column = 0) e2 = Entry(parent).grid(row = 1, column = 1) submit = Button(parent, text = "Submit").grid(row = 4, column = 0) parent.mainloop()
Kết quả:
Phương thức place() trong Python Tkinter
Trình quản lý layout place() sắp xếp các widget theo các tọa độ x và y.
Cú pháp:
widget.place(options)
Dưới đây là danh sách các tùy chọn:
- Anchor: Nó thể hiện vị trí chính xác của widget con trong container. Giá trị mặc định là NW (góc trên bên trái).
- bordermode: Giá trị mặc định của kiểu đường viền là INSIDE đề cập đến việc bỏ qua giá trị gốc bên trong đường viền. Tùy chọn còn lại là OUTSIDE.
- height, width: Nó đề cập đến chiều cao và chiều rộng của widget tính bằng pixel.
- relheight, relwidth: Chiều cao và chiều rộng có giá trị trong khoảng 0,0 và 1,0.
- relx, rely: Có giá trị trong khoảng 0,0 và 1,0, là độ lệch theo hướng ngang và dọc.
- x, y: Nó đề cập đến độ lệch ngang và dọc theo pixel.
Ví dụ:
from tkinter import * top = Tk() top.geometry("400x250") name = Label(top, text = "Name").place(x = 30, y = 50) email = Label(top, text = "Email").place(x = 30, y = 90) password = Label(top, text = "Password").place(x = 30, y = 130) e1 = Entry(top).place(x = 80, y = 50) e2 = Entry(top).place(x = 80, y = 90) e3 = Entry(top).place(x = 95, y = 130) top.mainloop()
Kết quả: