Tkinter là một thư viện trong Python giúp tạo ra giao diện đồ họa người dùng (GUI), giúp người dùng tương tác với ứng dụng một cách trực quan, từ ứng dụng đơn giản như cửa sổ đăng nhập đến các ứng dụng phức tạp hơn như trình duyệt web hoặc ứng dụng quản lý dữ liệu. Đây là một công cụ mạnh mẽ giúp những người mới bắt đầu với lập trình GUI có thể dễ dàng tiếp cận và tạo ra các ứng dụng chất lượng. Trong bài viết dưới đây, hãy cùng ICANTECH tìm hiểu về giao diện bằng Python trên thư viện Tkinter nhé!
Tkinter là một thư viện trong ngôn ngữ lập trình Python được sử dụng để tạo giao diện đồ họa người dùng (GUI). "Tkinter" là viết tắt của "Tk interface,", một toolkit đồ họa cung cấp các công cụ để phát triển giao diện người dùng.
Tkinter là một phần của thư viện tiêu chuẩn của Python và đã được tích hợp sẵn trong hầu hết các cài đặt Python. Điều này giúp cho Tkinter trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng với giao diện đồ họa đơn giản trong Python.
Một số đặc điểm của Tkinter bao gồm khả năng tạo các thành phần giao diện như cửa sổ, nút, ô văn bản, và các widget khác để tương tác với người dùng. Tkinter cung cấp cả các sự kiện và phương thức để xử lý tương tác người dùng và thay đổi trạng thái của ứng dụng.
Ví dụ đoạn code để tạo 1 màn hình giao diện cơ bản trong tkinter:
from tkinter import Tk, Frame, BOTH
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Simple")
self.pack(fill=BOTH, expand=1)
root = Tk()
root.geometry("250x150+300+300")
app = Example(root)
root.mainloop()
Kết quả
Trong Tkinter, có nhiều widget (đối tượng) khác nhau mà bạn có thể sử dụng để tạo các ứng dụng giao diện người dùng như:
Thông thường nhãn được hiển thị văn bản hoặc hình ảnh tĩnh.
from tkinter import *
root = Tk()
label = Label(root, text="Hello, Tkinter!")
label.pack()
root.mainloop()
Tkinter Button hay còn gọi là Python Tkinter Button (nút). Để thêm nút có thể nhấn, bạn sử dụng đoạn code sau:
from tkinter import *
def click_me():
label.config(text="Button was clicked!")
root = Tk()
button = Button(root, text="Click Me!", command=click_me)
button.pack()
label = Label(root, text="")
label.pack()
root.mainloop()
Entry (Ô nhập liệu): Để nhập văn bản từ người dùng.
from tkinter import *
def show_text():
label.config(text=entry.get())
root = Tk()
entry = Entry(root)
entry.pack()
button = Button(root, text="Show Text", command=show_text)
button.pack()
label = Label(root, text="")
label.pack()
root.mainloop()
Checkbutton hay còn gọi là nút kiểm tra cho phép người dùng chọn nhiều tùy chọn.
from tkinter import *
def show_selection():
label.config(text="Selected: " + var.get())
root = Tk()
var = StringVar()
check = Checkbutton(root, text="Check me!", variable=var, onvalue="Checked", offvalue="Unchecked")
check.pack()
button = Button(root, text="Show Selection", command=show_selection)
button.pack()
label = Label(root, text="")
label.pack()
root.mainloop()
Radio button cho phép người dùng chọn một tùy chọn duy nhất từ một nhóm.
from tkinter import *
def show_choice():
label.config(text="Selected: " + var.get())
root = Tk()
var = StringVar()
radio1 = Radiobutton(root, text="Option 1", variable=var, value="Option 1")
radio1.pack()
radio2 = Radiobutton(root, text="Option 2", variable=var, value="Option 2")
radio2.pack()
button = Button(root, text="Show Choice", command=show_choice)
button.pack()
label = Label(root, text="")
label.pack()
root.mainloop()
Các widget được ICANTECH nêu ở trên đều là những widget cơ bản, thường gặp. Ngoài ra, còn có một số widget khác mà bạn có thể tham khảo:
Tkinter cung cấp một số phương pháp để sắp xếp các widget, trong đó có ba phương pháp chính:
Phương pháp này cho phép bạn sắp xếp các widget dọc theo một trục (thường là theo chiều dọc) và chiếm không gian tối đa trên cửa sổ.
Các widget được thêm vào cửa sổ bằng cách sử dụng phương thức widget.pack(options)
# Import toàn bộ các widget và các hàm từ thư viện tkinter
from tkinter import *
# Tạo một cửa sổ gốc và gán nó vào biến parent
parent = Tk()
# Tạo một nút màu đỏ với chữ "Red" và màu chữ là đỏ
redbutton = Button(parent, text="Red", fg="red")
# Đặt nút màu đỏ ở bên trái của cửa sổ gốc
redbutton.pack(side=LEFT)
# Tạo một nút màu đen với chữ "Black" và màu chữ là đen
greenbutton = Button(parent, text="Black", fg="black")
# Đặt nút màu đen ở bên phải của cửa sổ gốc
greenbutton.pack(side=RIGHT)
# Tạo một nút màu xanh với chữ "Blue" và màu chữ là xanh
bluebutton = Button(parent, text="Blue", fg="blue")
# Đặt nút màu xanh ở đỉnh của cửa sổ gốc
bluebutton.pack(side=TOP)
# Tạo một nút màu xanh lá cây với chữ "Green" và màu chữ là xanh lá cây
blackbutton = Button(parent, text="Green", fg="green")
# Đặt nút màu xanh lá cây ở đáy của cửa sổ gốc
blackbutton.pack(side=BOTTOM)
# Khởi chạy vòng lặp chính của ứng dụng, đảm bảo cửa sổ hiển thị và phản hồi với người dùng
parent.mainloop()
Kết quả
Phương pháp này giúp phép bạn sắp xếp các widget dựa trên một lưới ô. Tương ứng với mỗi widget được đặt tại một hàng và một cột cụ thể.
Các widget được thêm vào cửa sổ bằng cách sử dụng phương thức widget.grid(options)
# Import toàn bộ các widget và các hàm từ thư viện tkinter
from tkinter import *
# Tạo một cửa sổ gốc và gán nó vào biến parent
parent = Tk()
# Tạo nhãn với văn bản "Name" và đặt nó tại hàng 0, cột 0
name_label = Label(parent, text="Name")
name_label.grid(row=0, column=0)
# Tạo một ô nhập liệu và đặt nó tại hàng 0, cột 1
e1 = Entry(parent)
e1.grid(row=0, column=1)
# Tạo nhãn với văn bản "Password" và đặt nó tại hàng 1, cột 0
password_label = Label(parent, text="Password")
password_label.grid(row=1, column=0)
# Tạo một ô nhập liệu và đặt nó tại hàng 1, cột 1
e2 = Entry(parent)
e2.grid(row=1, column=1)
# Tạo nút với văn bản "Submit" và đặt nó tại hàng 4, cột 0
submit_button = Button(parent, text="Submit")
submit_button.grid(row=4, column=0)
# Khởi chạy vòng lặp chính của ứng dụng, đảm bảo cửa sổ hiển thị và phản hồi với người dùng
parent.mainloop()
Kết quả:
Phương pháp này cho phép bạn chỉ định vị trí cụ thể của các widget trên cửa sổ. Như vậy, bạn cần chỉ định tọa độ (x, y) của widget để đặt chúng trên cửa sổ.
Các widget được thêm vào cửa sổ bằng cách sử dụng phương thức widget.place(options)
# Import toàn bộ các widget và các hàm từ thư viện tkinter
from tkinter import *
# Tạo một cửa sổ gốc và gán nó vào biến top
top = Tk()
# Đặt kích thước cửa sổ là 400x250 pixel
top.geometry("400x250")
# Tạo nhãn với văn bản "Name" và đặt nó ở tọa độ (x=30, y=50)
name_label = Label(top, text="Name")
name_label.place(x=30, y=50)
# Tạo nhãn với văn bản "Email" và đặt nó ở tọa độ (x=30, y=90)
email_label = Label(top, text="Email")
email_label.place(x=30, y=90)
# Tạo nhãn với văn bản "Password" và đặt nó ở tọa độ (x=30, y=130)
password_label = Label(top, text="Password")
password_label.place(x=30, y=130)
# Tạo ô nhập liệu và đặt nó ở tọa độ (x=80, y=50)
e1 = Entry(top)
e1.place(x=80, y=50)
# Tạo ô nhập liệu và đặt nó ở tọa độ (x=80, y=90)
e2 = Entry(top)
e2.place(x=80, y=90)
# Tạo ô nhập liệu và đặt nó ở tọa độ (x=95, y=130)
e3 = Entry(top)
e3.place(x=95, y=130)
# Khởi chạy vòng lặp chính của ứng dụng, đảm bảo cửa sổ hiển thị và phản hồi với người dùng
top.mainloop()
Kết quả:
Trong bài viết trên, ICANTECH đã cùng bạn khám phá tổng quan về Tkinter cũng như các khái niệm cơ bản như cách tạo cửa sổ, các widget, đến việc sắp xếp và tương tác với người dùng. Hi vọng bài viết này đã giúp bạn có cái nhìn tổng quan hơn về Tkinter trong Python.
Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình online dưới đây tại ICANTECH nhé
Nguồn ảnh: ICANTECH.