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ị+50
có 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ị-50
có 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ị+50
có 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ị-50
có 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ổ
root
bằ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.