1. Khái niệm và kiến trúc chương trình

  • Tkinter là thư viện giao diện (GUI) có sẵn trong Python.
  • Sử dụng để tạo các ứng dụng với cửa sổ, nút bấm, menu và các yếu tố đồ họa khác.
  • Lập trình tkinter theo hướng sự kiện như sau: Mở cửa sổ → chờ người dùng thao tác → nhấn nút  → hàm được gọi → tiếp tục chờ.
  • Kiến trúc chương trình tkinter: 

import tkinter as tk # Thêm thư viện tkinter
# Hàm xử lý
# Tạo cửa sổ
# Tạo các thành phần trên giao diện
# Chạy chương trình

  • Tkinter gọi các thành phần giao diện là Widget. Các thành phần giao diện gồm: Lable, Entry, Button, Text, Combobox.

2. Thành phần giao diện

    • Cửa sổ giao diện (hay cửa sổ ứng dụng)

    Là vùng hiển thị hình chữ nhật trên màn hình máy tính hoặc thiết bị thông minh.

    Nơi chứa các yếu tố đồ họa như nút bấm, thanh công cụ và văn bản.

    Là cầu nối tương tác cho phép người dùng điều khiển phần mềm.

    Ví dụ: Tạo cửa sổ giao diện với tiêu đề "Quan ly hoc sinh" 

    import tkinter as tk #Thêm thư viện vào Python
    cua_so = tk.Tk() #tạo cửa sổ
    cua_so.title("Quan ly hoc sinh") #Tiêu đề cho cửa sổ
    cua_so.mainloop() #Chạy chương trình
    • Nhãn (Lable)

    Là thành phần tĩnh hiển thị văn bản. Giúp định danh, đặt tên hoặc cung cấp hướng dẫn cho các thành phần tương tác khác.

    Lệnh tạo nhãn:

    lbl = tk.Lable(cua_so, text = "Văn bản cần hiển thị", font = ("Arial", 14, "Bold"), fg = "blue")
    • Nút nhấn (Button)

    Là thành phần tương tác trên màn hình (dạng văn bản hoặc biểu tượng) được thiết kế để thực thi ngay lập tức một chức năng hoặc một chuỗi hành động cụ thể khi người dùng nhấp vào.

    Lệnh tạo nút nhấn:

    # Tạo hàm xử lý
    def xin_chao():
     print("Chao ban!")
    # Tạo nút nhấn
    btn = tk.Button(cua_so, text = "Nhấn vào đây", command = xin_chao)
    • Ô nhập dữ liệu (Entry và Textbox)

    Là thành phần cho phép người dùng nhập hoặc hiển thị văn bản như ô nhập tên, mật khẩu,...

    Lệnh tạo và các phương thức

    Tạo ô nhập với một dòng (Entry):

    txt = tk.Entry(cua_so)

    Tạo ô nhập với nhiều dòng (Text):

    txt = tk.Text(cua_so, width = 40, height = 10) 

    Trong đó: width là số ký tự ngang, height là số dòng văn bản.

    Lấy dữ liệu từ ô nhập với lệnh Entry:

    ho_ten = tk.get()

    Lấy dữ liệu từ ô nhập với lệnh Text:

    kq = txt.get("1.0", tk.END)

    Trong đó: với "1.0" thì 1 là dòng bắt đầu lấy và 0 là ký tự của dòng 1 bắt đầu lấy.

    Ví dụ: Tạo chương trình thực hiện phép tính, nhân một số nguyên với 2, giao diện như hình dưới:

    phep_nhan.png (18480 KB)

    Gợi ý đáp án: 

    import tkinter as tk
    
    def thuc_hien():
        kq = int(txt.get()) #lấy dữ liệu từ Entry
        lbl.config(text = "Kết quả phép tính = " + str(kq*2))
    
    #Tạo cửa sổ
    cua_so = tk.Tk()
    cua_so.title("Phép nhân")
    cua_so.geometry("300x150")
    
    #Tạo tiêu đề chính
    lbl_tieude = tk.Label(cua_so, text = "PHÉP NHÂN MỘT SỐ VỚI 2", font = ("Arial", 14, "bold"), fg = "Blue")
    lbl_tieude.pack()
    
    #Tạo textbox
    txt = tk.Entry(cua_so, text="")
    txt.pack()
    
    #Tạo nút nhấn tính toán
    btn = tk.Button(cua_so, text = "Tính toán", command=thuc_hien)
    btn.pack()
    
    #Tạo nhãn hiện kết quả
    lbl = tk.Label(cua_so, text = "")
    lbl.pack()
    
    #Chạy chương trình
    cua_so.mainloop()

    3. Bài tập

    Bài 1: Viết chương trình cộng 2 số nhập từ bàn phím.

    Bài 2: Viết chương trình máy tính cá nhân đơn giản.

    Bài 3: Viết chương trình tính điểm trung bình và xếp loại học lực của các môn thi.

    Bài 4: Viết chương trình nhập danh sách học sinh. In ra tổng số học sinh trong danh sách

    (Hướng dẫn bài 4: Sử dụng Text để nhập danh sách, các phương thức split() để xóa ký tự \n, strip() để loại bỏ dòng trống sau đó đếm số phần tử trong danh sách)