Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Tìm hiểu cửa sổ Tkinter trong Python
Trong bài viết này, mình sẽ tìm hiểu cách điều chỉnh các thuộc tính khác nhau của một cửa sổ Tkinter trong Python. Từ việc thay đổi tiêu đề, kích thước, vị trí của cửa sổ cho đến việc cài đặt độ trong suốt và thay đổi biểu tượng, chúng ta sẽ tìm hiểu các phương thức và kỹ thuật để tùy chỉnh giao diện người dùng theo nhu cầu. Bài viết sẽ giúp bạn nắm vững cách sử dụng Tkinter để tạo ra những ứng dụng giao diện đồ họa (GUI) phong phú và trực quan.

Bắt đầu với một chương trình đơn giản bao gồm một cửa sổ:
import tkinter as tk root = tk.Tk() root.mainloop()
Nếu bạn chạy chương trình, bạn sẽ thấy một cửa sổ như sau:

Cửa sổ root có tiêu đề mặc định là "tk". Nó cũng có ba nút hệ thống gồm Thu nhỏ, Phóng to và Đóng.
Bài viết này được đăng tại [free tuts .net]
Hãy học cách thay đổi các thuộc tính của cửa sổ root.
Thay đổi tiêu đề cửa sổ trong Tkinter
Để thay đổi tiêu đề của cửa sổ, bạn sử dụng phương thức title() như sau:
window.title(new_title)
Ví dụ, đoạn mã sau thay đổi tiêu đề của cửa sổ root thành 'Tkinter Window Demo':
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.mainloop()
Để lấy tiêu đề hiện tại của cửa sổ, bạn sử dụng phương thức title() mà không cần truyền tham số:
![]()
title = window.title()
Thay đổi kích thước và vị trí của cửa sổ trong Tkinter
Trong Tkinter, vị trí và kích thước của cửa sổ trên màn hình được xác định bởi thuộc tính geometry.
Cú pháp của thuộc tính geometry như sau:

widthxheight±x±y
Trong đó:
width: chiều rộng của cửa sổ tính bằng pixel.height: chiều cao của cửa sổ tính bằng pixel.x: vị trí ngang của cửa sổ. Ví dụ, giá trị+50có nghĩa là cạnh trái của cửa sổ sẽ cách cạnh trái của màn hình 50 pixel. Ngược lại, giá trị-50có nghĩa là cạnh phải của cửa sổ sẽ cách cạnh phải của màn hình 50 pixel.y: vị trí dọc của cửa sổ. Ví dụ, giá trị+50có nghĩa là cạnh trên của cửa sổ sẽ cách cạnh trên của màn hình 50 pixel. Ngược lại, giá trị-50có nghĩa là cạnh dưới của cửa sổ sẽ cách cạnh dưới của màn hình 50 pixel.
Để thay đổi kích thước và vị trí của cửa sổ, bạn sử dụng phương thức geometry():
window.geometry(new_geometry)
Ví dụ sau thay đổi kích thước của cửa sổ thành 600x400 và vị trí của cửa sổ cách 50 pixel từ trên và trái của màn hình:
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('600x400+50+50')
root.mainloop()
Đôi khi, bạn có thể muốn căn giữa cửa sổ trên màn hình. Chương trình sau đây minh họa cách làm điều đó:
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window - Center')
window_width = 300
window_height = 200
# lấy kích thước màn hình
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# tính toán tọa độ để căn giữa
center_x = int(screen_width/2 - window_width / 2)
center_y = int(screen_height/2 - window_height / 2)
# đặt vị trí của cửa sổ ở trung tâm màn hình
root.geometry(f'{window_width}x{window_height}+{center_x}+{center_y}')
root.mainloop()
Cách hoạt động:
- Lấy kích thước màn hình bằng các phương thức
winfo_screenwidth()vàwinfo_screenheight(). - Tính toán tọa độ trung tâm dựa trên kích thước màn hình và kích thước cửa sổ.
- Đặt kích thước và vị trí cho cửa sổ
rootbằng phương thứcgeometry().
Nếu bạn muốn lấy kích thước hiện tại của cửa sổ, bạn có thể sử dụng phương thức geometry() mà không cần truyền tham số:
window.geometry()
Điều chỉnh kích thước trong Tkinter
Mặc định, bạn có thể thay đổi kích thước chiều rộng và chiều cao của cửa sổ. Để ngăn chặn việc thay đổi kích thước cửa sổ, bạn có thể sử dụng phương thức resizable():
window.resizable(width, height)
Phương thức resizable() có hai tham số xác định liệu chiều rộng và chiều cao của cửa sổ có thể thay đổi kích thước hay không.
Ví dụ sau đây cho thấy cách tạo một cửa sổ với kích thước cố định:
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('600x400+50+50')
root.resizable(False, False)
root.mainloop()
Khi cửa sổ có thể thay đổi kích thước, bạn có thể chỉ định kích thước tối thiểu và tối đa bằng cách sử dụng các phương thức minsize() và maxsize():

window.minsize(min_width, min_height) window.maxsize(max_height, max_width)
Độ trong suốt trong Tkinter
Tkinter cho phép bạn chỉ định độ trong suốt của cửa sổ bằng cách thiết lập kênh alpha với giá trị từ 0.0 (hoàn toàn trong suốt) đến 1.0 (hoàn toàn không trong suốt):
window.attributes('-alpha', 0.5)
Ví dụ sau minh họa một cửa sổ với 50% trong suốt:

import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('600x400+50+50')
root.resizable(False, False)
root.attributes('-alpha', 0.5)
root.mainloop()
Trật tự xếp chồng cửa sổ trong Tkinter
Trật tự xếp chồng cửa sổ là thứ tự các cửa sổ được đặt trên màn hình từ dưới lên trên. Cửa sổ ở trên sẽ che phủ các cửa sổ phía dưới.
Để đảm bảo một cửa sổ luôn ở trên cùng của trật tự xếp chồng, bạn có thể sử dụng thuộc tính -topmost như sau:
window.attributes('-topmost', 1)
Để di chuyển cửa sổ lên hoặc xuống trong trật tự xếp chồng, bạn có thể sử dụng các phương thức lift() và lower():
window.lift() window.lift(another_window) window.lower() window.lower(another_window)
Ví dụ sau đây đặt cửa sổ root lên trên tất cả các cửa sổ khác. Nói cách khác, cửa sổ root luôn ở trên cùng:
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('300x200+50+50')
root.resizable(0, 0)
root.attributes('-topmost', 1)
root.mainloop()
Thay đổi biểu tượng mặc định trong Tkinter
Cửa sổ Tkinter hiển thị một biểu tượng mặc định. Để thay đổi biểu tượng này, bạn làm theo các bước sau:
- Chuẩn bị một hình ảnh ở định dạng .ico. Nếu bạn có hình ảnh ở các định dạng khác như png hoặc jpg, bạn có thể chuyển đổi nó sang định dạng .ico. Có nhiều công cụ trực tuyến cho phép bạn thực hiện điều này một cách dễ dàng.
- Đặt biểu tượng vào một thư mục có thể truy cập từ chương trình.
- Gọi phương thức
iconbitmap()của đối tượng cửa sổ.
Chương trình sau minh họa cách thay đổi biểu tượng mặc định thành một biểu tượng mới:
![]()
import tkinter as tk
root = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('300x200+50+50')
root.resizable(False, False)
root.iconbitmap('./assets/pythontutorial.ico')
root.mainloop()Kết bài
Trong quá trình phát triển ứng dụng giao diện đồ họa với Tkinter, việc tùy chỉnh các thuộc tính của cửa sổ là rất quan trọng để tạo ra trải nghiệm người dùng tốt hơn. Sử dụng phương thức title() để thay đổi tiêu đề, geometry() để điều chỉnh kích thước và vị trí, cũng như resizable() để kiểm soát khả năng thay đổi kích thước của cửa sổ, bạn có thể tạo ra giao diện phù hợp với yêu cầu của ứng dụng. Hơn nữa, việc thiết lập độ trong suốt bằng window.attributes('-alpha', 0.5) và đảm bảo cửa sổ luôn ở trên cùng với window.attributes('-topmost', 1) giúp tăng tính thẩm mỹ và tiện lợi. Cuối cùng, việc sử dụng iconbitmap() để thay đổi biểu tượng mặc định và các phương thức lift() và lower() để quản lý thứ tự xếp chồng của các cửa sổ giúp hoàn thiện giao diện người dùng của ứng dụng. Hy vọng rằng qua bài hướng dẫn này, bạn đã có thể nắm bắt được các kỹ thuật cơ bản để tùy chỉnh cửa sổ Tkinter, từ đó phát triển những ứng dụng giao diện đồ họa chuyên nghiệp và thân thiện với người dùng.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng