PxExl-1. HƯỚNG DẪN SỬ DỤNG PYTHON TKINTER ĐỂ TẠO GIAO DIỆN PHẦN MỀM (P1: GIỚI THIỆU, BỐ CỤC)

I. Giới Thiệu Python Tkinter

Tkinter là thư viện lập trình giao diện (GUI) tiêu chuẩn cho Python. 
Các bước để tạo một ứng dụng Tkinter bao gồm:
1. Import Tkinter module.
2. Tạo cửa sổ chính của ứng dụng GUI.
3. Thêm một hoặc nhiều widget nói trên vào ứng dụng GUI.
4. 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.

CÁC WIDGET CỦA TKINTER TRONG PYTHON

No

Button

Description

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.

19

MessageBox

Nó được sử dụng để hiển thị hộp thông báo trong các ứng dụng desktop.

Ví dụ 1 ( Tạo ứng dụng GUI đầu tiên)
Các câu lệnh:

from tkinter import * # import Tkinter module
window = Tk() # Tạo cửa sổ chính của ứng dụng GUI
window.title(“Welcome to Pyan app”) #Tạo title
window.mainloop() # 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

Kết quả trả ra như hình

Dòng cuối cùng gọi  mainloop hàm. Hàm này gọi vòng lặp vô tận của cửa sổ, vì vậy cửa sổ sẽ chờ bất kỳ tương tác người dùng nào cho đến khi chúng ta đóng nó.

Nếu bạn quên gọi  mainloop hàm, sẽ không có gì xuất hiện cho người dùng.

II. Bố cục Trong Tkinter

Python Tkinter cung cấp các phương thức để bố cục các widget sau.
1.Phương thức pack()
2.Phương thức grid()
3.Phương thức place()

2.1. Phương Thức pack()

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 tuỳ chọn options bao gồm:

  • 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ụ 2:
Các câu lệnh:

from tkinter import * #Import tkinter
parent = Tk() #Tạo cửa số chính của ứng dụng GUI, đặt tên biến là parent
redbutton = Button(parent, text = “Red”, fg = “red”) #Tạo nút red, tên là Red, màu đỏ
redbutton.pack(side = LEFT) #dùng phương thức pack() để chỉnh nút sang trái
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() #Gọi vòng lặp sự kiện chính

Kết quả trả ra như hình.

2.2. Phương Thức grid()

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.

Cú pháp:
widget.grid(options)

Các tuỳ chọn options bao gồm:

  • 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í dụ 3:
Các câu lệnh:

from tkinter import * #Import module Tkinter
parent = Tk() #Tạo cửa số chính của ứng dụng GUI, đặt tên biến là parent
name = Label(parent, text = “Name”).grid(row = 0, column = 0) #Đặt thông báo Label có tên là “name”, vị trí row = 0 là hàng trên cùng, column = 0 là cột ngoài cùng bên trái.
e1 = Entry(parent).grid(row = 0, column = 1) #Đặt nội dung điền vào Entry là e1. Vị trí row = 0 là hàng trên cùng, column = 1 là cột thứ 2 từ trái sang.
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) #Đặt nút tên Submit, hàng thứ 5, cột ngoài cùng bên trái.
parent.mainloop() #Gọi vòng lặp sự kiện chính

Kết quả trả ra như hình.

2.3. Phương Thức place()

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)

Các tuỳ chọn options bao gồm:

  • 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ụ 4:
Các câu lệnh:

from tkinter import * #Import module tkinter
top = Tk() #Tạo cửa sổ chính của ứng dụng GUI, đặt tên biến là parent
top.geometry(“400×250”) #Dùng hàm geometry tạo kích cỡ GUI là 400×250, đơn vị: pixel
name = Label(top, text = “Name”).place(x = 30, y = 50) #Tạo Label có tên “name”, độ lệch ngang và dọc theo pixel là 30 và 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) #Tạo Entry e1, độ lệch ngang và dọc theo pixel là 30 và 130.
e2 = Entry(top).place(x = 80, y = 90)
e3 = Entry(top).place(x = 95, y = 130)
top.mainloop() #Gọi vòng lặp sự kiện chính

Kết quả trả ra như hình.

III. Kết Luận

Như vậy, chúng tôi đã tiếp tục giới thiệu tới các bạn các khái niệm cơ bản của Tkinter trong Python. Nếu có vấn đề nào chưa rõ, các bạn hãy liên hệ với chúng tôi để được giúp đỡ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *