Python có rất nhiều khung GUI, nhưng Tkinter là khung duy nhất được tích hợp trong thư viện chuẩn Python. Tkinter có một số điểm mạnh. Đó là nền tảng chéo, vì vậy cùng một mã hoạt động trên Windows, macOS và Linux. Các phần tử trực quan được kết xuất bằng cách sử dụng các phần tử hệ điều hành gốc, vì vậy các ứng dụng được xây dựng bằng Tkinter trông giống như chúng thuộc về nền tảng nơi chúng chạy
Mặc dù Tkinter được coi là khung GUI Python trên thực tế, nhưng nó không phải là không bị chỉ trích. Một lời chỉ trích đáng chú ý là GUI được xây dựng bằng Tkinter trông đã lỗi thời. Nếu bạn muốn có một giao diện hiện đại, bóng bẩy thì Tkinter có thể không phải là thứ bạn đang tìm kiếm
Tuy nhiên, Tkinter nhẹ và tương đối dễ sử dụng so với các khung khác. Điều này làm cho nó trở thành một lựa chọn hấp dẫn để xây dựng các ứng dụng GUI bằng Python, đặc biệt là đối với các ứng dụng không cần ánh sáng hiện đại và ưu tiên hàng đầu là nhanh chóng xây dựng thứ gì đó có chức năng và đa nền tảng.
Trong hướng dẫn này, bạn sẽ học cách
- Bắt đầu với Tkinter với ứng dụng Hello, World
- Làm việc với các tiện ích, chẳng hạn như các nút và hộp văn bản
- Kiểm soát bố cục ứng dụng của bạn với trình quản lý hình học
- Làm cho các ứng dụng của bạn tương tác bằng cách liên kết các lần nhấp vào nút với các hàm Python
Ghi chú. Hướng dẫn này được điều chỉnh từ chương “Giao diện người dùng đồ họa” của Python Basics. Giới thiệu thực tế về Python 3
Cuốn sách sử dụng trình soạn thảo IDLE tích hợp sẵn của Python để tạo và chỉnh sửa các tệp Python cũng như tương tác với trình bao Python. Trong hướng dẫn này, các tham chiếu đến IDLE đã bị xóa để chuyển sang ngôn ngữ tổng quát hơn
Phần lớn tài liệu trong hướng dẫn này không thay đổi và bạn sẽ không gặp vấn đề gì khi chạy mã ví dụ từ trình chỉnh sửa và môi trường bạn chọn
Khi bạn đã thành thạo các kỹ năng này bằng cách thực hiện các bài tập ở cuối mỗi phần, bạn sẽ kết hợp mọi thứ lại với nhau bằng cách xây dựng hai ứng dụng. Đầu tiên là bộ chuyển đổi nhiệt độ và thứ hai là trình soạn thảo văn bản. Đã đến lúc đi sâu vào tìm hiểu cách xây dựng ứng dụng với Tkinter
Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới
Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Lập trình GUI Python với Tkinter” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian
Lấy bài kiểm tra "
Xây dựng ứng dụng GUI Python đầu tiên của bạn với Tkinter
Yếu tố nền tảng của Tkinter GUI là cửa sổ. Windows là nơi chứa tất cả các thành phần GUI khác sống. Các phần tử GUI khác này, chẳng hạn như hộp văn bản, nhãn và nút, được gọi là tiện ích con. Widget được chứa bên trong cửa sổ
Đầu tiên, tạo một cửa sổ chứa một widget duy nhất. Bắt đầu một phiên mới và làm theo
Ghi chú. Các ví dụ mã trong hướng dẫn này đều đã được thử nghiệm trên Windows, macOS và Ubuntu Linux 20. 04 với Python phiên bản 3. 10
Nếu bạn đã cài đặt Python với bộ cài đặt chính thức có sẵn cho Windows và macOS từ python. org, thì bạn sẽ không gặp vấn đề gì khi chạy mã mẫu. Bạn có thể yên tâm bỏ qua phần còn lại của ghi chú này và tiếp tục với phần hướng dẫn
Nếu bạn chưa cài đặt Python bằng trình cài đặt chính thức hoặc không có bản phân phối chính thức nào cho hệ thống của bạn, thì đây là một số mẹo để thiết lập và sử dụng
Python trên macOS với Homebrew
Bản phân phối Python cho macOS có sẵn trên Homebrew không đi kèm với phần phụ thuộc Tcl/Tk theo yêu cầu của Tkinter. Phiên bản hệ thống mặc định được sử dụng thay thế. Phiên bản này có thể đã lỗi thời và ngăn bạn nhập mô-đun Tkinter. Để tránh sự cố này, hãy sử dụng trình cài đặt macOS chính thức
UbuntuLinux 20. 04
Để tiết kiệm dung lượng bộ nhớ, phiên bản mặc định của trình thông dịch Python được cài đặt sẵn trên Ubuntu Linux 20. 04 không hỗ trợ Tkinter. However, if you want to continue using the Python interpreter bundled with your operating system, then install the following package
$ sudo apt-get install python3-tk
This installs the Python GUI Tkinter module
Other Linux Flavors
If you’re unable to get a working Python installation on your flavor of Linux, then you can build Python with the correct version of Tcl/Tk from the source code. For a step-by-step walk-through of this process, check out the . You may also try using pyenv to manage multiple Python versions
With your Python shell open, the first thing you need to do is import the Python GUI Tkinter module
>>>
>>> import tkinter as tk
A window is an instance of Tkinter’s
>>> import tkinter as tk
02 class. Go ahead and create a new window and assign it to the variable >>> import tkinter as tk
03>>>
>>> window = tk.Tk[]
When you execute the above code, a new window pops up on your screen. How it looks depends on your operating system
Throughout the rest of this tutorial, you’ll see Windows screenshots
Remove adsAdding a Widget
Now that you have a window, you can add a widget. Use the
>>> import tkinter as tk
04 class to add some text to a window. Create a >>> import tkinter as tk
05 widget with the text >>> import tkinter as tk
06 and assign it to a variable called >>> import tkinter as tk
07>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
The window you created earlier doesn’t change. You just created a
>>> import tkinter as tk
05 widget, but you haven’t added it to the window yet. There are several ways to add widgets to a window. Right now, you can use the >>> import tkinter as tk
05 widget’s >>> import tkinter as tk
10 method>>>
>>> greeting.pack[]
The window now looks like this
When you pack a widget into a window, Tkinter sizes the window as small as it can be while still fully encompassing the widget. Now execute the following
>>>
>>> window.mainloop[]
Nothing seems to happen, but notice that no new prompt appears in the shell
>>> import tkinter as tk
11 tells Python to run the Tkinter event loop. This method listens for events, such as button clicks or keypresses, and blocks any code that comes after it from running until you close the window where you called the method. Go ahead and close the window you’ve created, and you’ll see a new prompt displayed in the shellWarning. When you work with Tkinter from a Python REPL, updates to windows are applied as each line is executed. This is not the case when a Tkinter program is executed from a Python file
If you don’t include
>>> import tkinter as tk
11 at the end of a program in a Python file, then the Tkinter application will never run, and nothing will be displayed. Alternatively, you can build your user interface incrementally in Python REPL by calling >>> import tkinter as tk
13 after each step to reflect the changeCreating a window with Tkinter only takes a couple of lines of code. But blank windows aren’t very useful. In the next section, you’ll learn about some of the widgets available in Tkinter, and how you can customize them to meet your application’s needs
Check Your Understanding
Expand the code blocks below to check your understanding
Exercise. Create a Tkinter windowShow/Hide
Write a full Python script that creates a Tkinter window with the text
>>> import tkinter as tk
14The window should look like this
Try this exercise now
You can expand the code block below to see a solution
Solution. Create a Tkinter windowShow/Hide
Here’s one possible solution
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
Keep in mind your code may look different
When you’re ready, you can move on to the next section
Working With Widgets
Widgets are the bread and butter of the Python GUI framework Tkinter. They’re the elements through which users interact with your program. Each widget in Tkinter is defined by a class. Dưới đây là một số vật dụng có sẵn
Widget ClassDescription
>>> import tkinter as tk
05A widget used to display text on the screen>>> import tkinter as tk
16A button that can contain text and can perform an action when clicked>>> import tkinter as tk
17A text entry widget that allows only a single line of text>>> import tkinter as tk
18A text entry widget that allows multiline text entry>>> import tkinter as tk
19A rectangular region used to group related widgets or provide padding between widgetsYou’ll see how to work with each of these in the following sections, but keep in mind that Tkinter has many more widgets than those listed here. The widget’s choice gets even more complicated when you account for a whole new set of themed widgets. In the remaining part of this tutorial, you’re only going to use Tkinter’s classic widgets, though
If you’d like to learn more about the two widget types, then you can expand the collapsible section below
Classic vs Themed WidgetsShow/Hide
It’s worth noting that there are currently two broad categories of widgets in Tkinter
- Classic widgets. Available in the
20 package, for example>>> import tkinter as tk
21>>> import tkinter as tk
- Themed widgets. Available in the
22 submodule, for example>>> import tkinter as tk
23>>> import tkinter as tk
Tkinter’s classic widgets are highly customizable and straightforward, but they tend to appear dated or somewhat foreign on most platforms today. If you’d like to take advantage of widgets with a native look and feel familiar to users of a given operating system, then you might want to check out the themed widgets
Hầu hết các tiện ích theo chủ đề gần như là sự thay thế thả xuống cho các đối tác kế thừa của chúng, nhưng với giao diện hiện đại hơn. Bạn cũng có thể sử dụng một vài tiện ích hoàn toàn mới, chẳng hạn như tiện ích con , trước đây không có sẵn trong Tkinter. Đồng thời, bạn sẽ cần tiếp tục sử dụng một số tiện ích cổ điển không có tùy chọn thay thế theo chủ đề
Ghi chú. Các widget theo chủ đề trong mô-đun
>>> import tkinter as tk
24 sử dụng giao diện gốc của hệ điều hành theo mặc định. Tuy nhiên, bạn có thể thay đổi chủ đề của chúng để có giao diện trực quan tùy chỉnh, chẳng hạn như chế độ sáng và tối. Chủ đề là tập hợp các định nghĩa kiểu có thể tái sử dụng, mà bạn có thể coi là Biểu định kiểu xếp tầng [CSS] cho TkinterLàm cho các tiện ích mới có thể sử dụng được có nghĩa là trích xuất hầu hết thông tin kiểu dáng của chúng thành các đối tượng riêng biệt. Một mặt, sự phân tách các mối quan tâm như vậy là một thuộc tính mong muốn trong thiết kế của thư viện, nhưng mặt khác, nó giới thiệu một lớp trừu tượng bổ sung, làm cho các tiện ích theo chủ đề khó tạo kiểu hơn so với các tiện ích cổ điển
Khi làm việc với các widget thông thường và theo chủ đề trong Tkinter, theo thông lệ, bạn sẽ khai báo các bí danh sau cho các gói và mô-đun Tkinter
>>>
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
Các bí danh như thế này cho phép bạn đề cập rõ ràng đến
>>> import tkinter as tk
04 hoặc >>> import tkinter as tk
26, chẳng hạn, trong một chương trình tùy thuộc vào nhu cầu của bạn>>>
>>> tk.Label[]
>>> ttk.Label[]
Tuy nhiên, đôi khi bạn có thể thấy thuận tiện hơn khi sử dụng nhập ký tự đại diện [
>>> import tkinter as tk
27] để tự động ghi đè tất cả các tiện ích cũ bằng các tiện ích theo chủ đề nếu có thể, như vậy>>>
>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
Bây giờ, bạn không cần phải thêm tiền tố vào tên lớp của tiện ích với mô-đun Python tương ứng của nó. Bạn sẽ luôn tạo một tiện ích theo chủ đề miễn là tiện ích đó có sẵn hoặc bạn sẽ quay lại tiện ích cổ điển nếu không. Hai câu lệnh nhập ở trên phải được đặt theo thứ tự đã chỉ định để có hiệu lực. Do đó, nhập ký tự đại diện được coi là một thông lệ xấu, thường nên tránh trừ khi được sử dụng một cách có ý thức
Để có danh sách đầy đủ các tiện ích Tkinter, hãy xem Tiện ích cơ bản và Tiện ích khác trong hướng dẫn TkDocs. Mặc dù nó mô tả các vật dụng theo chủ đề được giới thiệu trong Tcl/Tk 8. 5, hầu hết thông tin ở đó cũng nên áp dụng cho các vật dụng cổ điển
Sự thật thú vị. Tkinter nghĩa đen là viết tắt của “giao diện Tk” vì nó là một ràng buộc Python hoặc giao diện lập trình cho thư viện Tk bằng ngôn ngữ kịch bản Tcl
Hiện tại, hãy xem kỹ tiện ích
>>> import tkinter as tk
05Remove adsHiển thị văn bản và hình ảnh với >>> import tkinter as tk
05 Widget
>>> import tkinter as tk
>>> import tkinter as tk
05 widget được sử dụng để hiển thị văn bản hoặc hình ảnh. Người dùng không thể chỉnh sửa văn bản được hiển thị bởi tiện ích >>> import tkinter as tk
05. Nó chỉ dành cho mục đích hiển thị. Như bạn đã thấy trong ví dụ ở phần đầu của hướng dẫn này, bạn có thể tạo tiện ích con >>> import tkinter as tk
05 bằng cách khởi tạo lớp >>> import tkinter as tk
05 và chuyển một chuỗi tới tham số >>> import tkinter as tk
34>>> import tkinter as tk
0>>> import tkinter as tk
05 tiện ích hiển thị văn bản với màu văn bản hệ thống mặc định và màu nền văn bản hệ thống mặc định. Chúng thường có màu đen và trắng tương ứng, nhưng bạn có thể thấy các màu khác nếu bạn đã thay đổi các cài đặt này trong hệ điều hành của mìnhBạn có thể kiểm soát văn bản và màu nền của
>>> import tkinter as tk
05 bằng cách sử dụng các tham số >>> import tkinter as tk
37 và >>> import tkinter as tk
38>>> import tkinter as tk
1Có rất nhiều tên màu hợp lệ, bao gồm
39>>> import tkinter as tk
40>>> import tkinter as tk
41>>> import tkinter as tk
42>>> import tkinter as tk
43>>> import tkinter as tk
44>>> import tkinter as tk
Nhiều tên màu HTML hoạt động với Tkinter. Để có tham khảo đầy đủ, bao gồm các màu hệ thống dành riêng cho macOS và Windows mà chủ đề hệ thống hiện tại kiểm soát, hãy xem trang hướng dẫn sử dụng màu
Bạn cũng có thể chỉ định một màu bằng cách sử dụng
>>> import tkinter as tk
2Thao tác này đặt nền nhãn thành màu xanh lam nhạt đẹp mắt. Các giá trị RGB thập lục phân khó hiểu hơn các màu được đặt tên, nhưng chúng cũng linh hoạt hơn. May mắn thay, có những công cụ giúp việc lấy mã màu thập lục phân tương đối dễ dàng
Nếu bạn không muốn gõ
>>> import tkinter as tk
37 và >>> import tkinter as tk
38 mọi lúc, thì bạn có thể sử dụng các tham số tốc ký >>> import tkinter as tk
47 và >>> import tkinter as tk
48 để đặt màu nền trước và nền sau>>> import tkinter as tk
3Bạn cũng có thể kiểm soát chiều rộng và chiều cao của nhãn bằng các tham số
>>> import tkinter as tk
49 và >>> import tkinter as tk
50>>> import tkinter as tk
4Đây là những gì nhãn này trông giống như trong một cửa sổ
Có vẻ lạ khi nhãn trong cửa sổ không phải là hình vuông mặc dù cả chiều rộng và chiều cao đều được đặt thành
>>> import tkinter as tk
51. Điều này là do chiều rộng và chiều cao được đo bằng đơn vị văn bản. Một đơn vị văn bản theo chiều ngang được xác định bởi chiều rộng của ký tự >>> import tkinter as tk
52 hoặc số 0 trong phông chữ hệ thống mặc định. Tương tự, một đơn vị văn bản dọc được xác định bởi chiều cao của ký tự >>> import tkinter as tk
52Ghi chú. Đối với các phép đo chiều rộng và chiều cao, Tkinter sử dụng các đơn vị văn bản, thay vì đơn vị như inch, cm hoặc pixel, để đảm bảo hoạt động nhất quán của ứng dụng trên các nền tảng
Đơn vị đo lường theo chiều rộng của một ký tự có nghĩa là kích thước của tiện ích có liên quan đến phông chữ mặc định trên máy của người dùng. Điều này đảm bảo văn bản vừa vặn trong nhãn và nút, bất kể ứng dụng đang chạy ở đâu
Nhãn rất phù hợp để hiển thị một số văn bản, nhưng chúng không giúp bạn nhận thông tin đầu vào từ người dùng. Ba tiện ích tiếp theo mà bạn sẽ tìm hiểu đều được sử dụng để nhận đầu vào của người dùng
Remove adsHiển thị các nút có thể nhấp với >>> import tkinter as tk
16 Widget
>>> import tkinter as tk
>>> import tkinter as tk
16 tiện ích được sử dụng để hiển thị các nút có thể nhấp. Bạn có thể định cấu hình chúng để gọi một chức năng bất cứ khi nào chúng được nhấp vào. Bạn sẽ đề cập đến cách gọi các chức năng từ các lần nhấp vào nút trong phần tiếp theo. Bây giờ, hãy xem cách tạo và tạo kiểu cho một nútCó nhiều điểm tương đồng giữa các vật dụng
>>> import tkinter as tk
16 và >>> import tkinter as tk
05. Theo nhiều cách, một nút chỉ là một nhãn mà bạn có thể nhấp vào. Các đối số từ khóa tương tự mà bạn sử dụng để tạo và tạo kiểu cho >>> import tkinter as tk
05 sẽ hoạt động với tiện ích con >>> import tkinter as tk
16. Ví dụ: đoạn mã sau tạo một nút có nền màu xanh và văn bản màu vàng. Nó cũng đặt chiều rộng và chiều cao lần lượt là các đơn vị văn bản >>> import tkinter as tk
60 và >>> import tkinter as tk
61>>> import tkinter as tk
5Đây là giao diện của nút trong một cửa sổ
khá tiện lợi. Bạn có thể sử dụng hai tiện ích tiếp theo để thu thập văn bản nhập từ người dùng
Nhận thông tin đầu vào của người dùng với >>> import tkinter as tk
17 Widget
>>> import tkinter as tk
Khi bạn cần lấy một chút văn bản từ người dùng, chẳng hạn như tên hoặc địa chỉ email, hãy sử dụng tiện ích
>>> import tkinter as tk
17. Nó sẽ hiển thị một hộp văn bản nhỏ mà người dùng có thể nhập một số văn bản vào. Việc tạo và tạo kiểu cho tiện ích con >>> import tkinter as tk
17 hoạt động khá giống với tiện ích con >>> import tkinter as tk
05 và >>> import tkinter as tk
16. Ví dụ: đoạn mã sau tạo một tiện ích có nền màu xanh lam, một số văn bản màu vàng và chiều rộng là >>> import tkinter as tk
67 đơn vị văn bản>>> import tkinter as tk
6Tuy nhiên, điều thú vị về các vật dụng của
>>> import tkinter as tk
17 không phải là cách tạo kiểu cho chúng. Đó là cách sử dụng chúng để nhận thông tin đầu vào từ người dùng. Có ba thao tác chính mà bạn có thể thực hiện với các vật dụng >>> import tkinter as tk
17- Truy xuất văn bản bằng
70>>> import tkinter as tk
- Xóa văn bản bằng
71>>> import tkinter as tk
- Chèn văn bản với
72>>> import tkinter as tk
Cách tốt nhất để hiểu về các vật dụng của
>>> import tkinter as tk
17 là tạo một vật dụng và tương tác với nó. Mở trình bao Python và làm theo các ví dụ trong phần này. Đầu tiên, nhập >>> import tkinter as tk
20 và tạo một cửa sổ mới>>>
>>> import tkinter as tk
7Bây giờ hãy tạo một tiện ích
>>> import tkinter as tk
05 và một tiện ích >>> import tkinter as tk
17>>>
>>> import tkinter as tk
8>>> import tkinter as tk
05 mô tả loại văn bản nào sẽ xuất hiện trong tiện ích >>> import tkinter as tk
17. Nó không thực thi bất kỳ loại yêu cầu nào trên >>> import tkinter as tk
17, nhưng nó cho người dùng biết chương trình của bạn muốn họ đặt gì ở đó. Bạn cần >>> import tkinter as tk
10 vật dụng vào cửa sổ để chúng hiển thị>>>
>>> import tkinter as tk
9Đây là những gì trông giống như
Lưu ý rằng Tkinter tự động căn giữa nhãn phía trên tiện ích
>>> import tkinter as tk
17 trong cửa sổ. Đây là một tính năng của >>> import tkinter as tk
10, bạn sẽ tìm hiểu thêm về tính năng này trong các phần sauClick inside the
>>> import tkinter as tk
17 widget with your mouse and type >>> import tkinter as tk
84Bây giờ bạn đã nhập một số văn bản vào tiện ích
>>> import tkinter as tk
17, nhưng văn bản đó chưa được gửi đến chương trình của bạn. Bạn có thể sử dụng >>> import tkinter as tk
70 để truy xuất văn bản và gán nó cho một biến có tên là >>> import tkinter as tk
87>>>
>>> window = tk.Tk[]
0Bạn cũng có thể xóa văn bản. Phương thức
>>> import tkinter as tk
71 này lấy một đối số số nguyên cho Python biết ký tự nào cần xóa. Ví dụ: khối mã bên dưới cho biết cách >>> import tkinter as tk
89 xóa ký tự đầu tiên khỏi >>> import tkinter as tk
17>>>
>>> window = tk.Tk[]
1Văn bản còn lại trong widget bây giờ là
>>> import tkinter as tk
91Lưu ý rằng, giống như đối tượng chuỗi Python, văn bản trong tiện ích con
>>> import tkinter as tk
17 được lập chỉ mục bắt đầu bằng >>> import tkinter as tk
52Nếu bạn cần xóa một số ký tự khỏi
>>> import tkinter as tk
17, sau đó chuyển đối số số nguyên thứ hai tới >>> import tkinter as tk
71 cho biết chỉ mục của ký tự nơi việc xóa sẽ dừng lại. Ví dụ: đoạn mã sau xóa bốn chữ cái đầu tiên trong >>> import tkinter as tk
17>>>
>>> window = tk.Tk[]
2Văn bản còn lại bây giờ là
>>> import tkinter as tk
97>>> import tkinter as tk
98 hoạt động giống như. Đối số đầu tiên xác định chỉ mục bắt đầu và quá trình xóa tiếp tục nhưng không bao gồm chỉ mục được chuyển làm đối số thứ hai. Sử dụng hằng số đặc biệt >>> import tkinter as tk
99 cho đối số thứ hai của >>> import tkinter as tk
71 để xóa tất cả văn bản trong >>> import tkinter as tk
17>>>
>>> window = tk.Tk[]
3Bây giờ bạn sẽ thấy một hộp văn bản trống
Ngược lại, bạn cũng có thể chèn văn bản vào tiện ích
>>> import tkinter as tk
17>>>
>>> window = tk.Tk[]
4The window now looks like this
Đối số đầu tiên cho biết
>>> import tkinter as tk
72 nơi chèn văn bản. Nếu không có văn bản nào trong >>> import tkinter as tk
17, thì văn bản mới sẽ luôn được chèn vào đầu tiện ích con, bất kể bạn chuyển giá trị nào làm đối số đầu tiên. Ví dụ: gọi >>> import tkinter as tk
72 với >>> window = tk.Tk[]
06 làm đối số đầu tiên thay vì >>> import tkinter as tk
52, như bạn đã làm ở trên, sẽ tạo ra kết quả tương tựNếu
>>> import tkinter as tk
17 đã chứa một số văn bản, thì >>> import tkinter as tk
72 sẽ chèn văn bản mới vào vị trí đã chỉ định và dịch chuyển tất cả văn bản hiện có sang bên phải>>>
>>> window = tk.Tk[]
5Văn bản tiện ích bây giờ là
>>> import tkinter as tk
84>>> import tkinter as tk
17 tiện ích rất phù hợp để thu thập một lượng nhỏ văn bản từ người dùng, nhưng vì chúng chỉ được hiển thị trên một dòng nên chúng không lý tưởng để thu thập một lượng lớn văn bản. Đó là nơi mà các vật dụng của >>> import tkinter as tk
18 xuất hiệnRemove adsNhận đầu vào của người dùng nhiều dòng với >>> import tkinter as tk
18 Widget
>>> import tkinter as tk
Các widget
>>> import tkinter as tk
18 được sử dụng để nhập văn bản, giống như các widget >>> import tkinter as tk
17. Sự khác biệt là các tiện ích >>> import tkinter as tk
18 có thể chứa nhiều dòng văn bản. Với tiện ích >>> import tkinter as tk
18, người dùng có thể nhập toàn bộ đoạn văn hoặc thậm chí nhiều trang văn bản. Cũng giống như với các tiện ích con >>> import tkinter as tk
17, bạn có thể thực hiện ba thao tác chính với tiện ích con >>> import tkinter as tk
18- Truy xuất văn bản với
70>>> import tkinter as tk
- Xóa văn bản với
71>>> import tkinter as tk
- Chèn văn bản với
72>>> import tkinter as tk
Mặc dù tên phương thức giống như phương thức
>>> import tkinter as tk
17, nhưng chúng hoạt động hơi khác một chút. Đã đến lúc bắt tay vào làm bằng cách tạo một tiện ích >>> import tkinter as tk
18 và xem nó có thể làm được những gìGhi chú. Bạn vẫn mở cửa sổ từ phần trước chứ?
Nếu vậy, thì bạn có thể đóng nó bằng cách thực hiện như sau
>>>
>>> window = tk.Tk[]
6Bạn cũng có thể đóng thủ công bằng cách nhấp vào nút Đóng
Trong trình bao Python của bạn, hãy tạo một cửa sổ trống mới và đóng gói tiện ích
>>> window = tk.Tk[]
25 vào đó>>>
>>> window = tk.Tk[]
7Theo mặc định, hộp văn bản lớn hơn nhiều so với
>>> import tkinter as tk
17 widget. Đây là cửa sổ được tạo ở trên trông như thế nàoNhấp vào bất kỳ đâu bên trong cửa sổ để kích hoạt hộp văn bản. Nhập từ
>>> window = tk.Tk[]
27. Sau đó nhấn Enter và nhập >>> window = tk.Tk[]
28 trên dòng thứ hai. Cửa sổ bây giờ trông như thế này. Giống như với tiện ích con
>>> import tkinter as tk
17, bạn có thể truy xuất văn bản từ tiện ích con >>> import tkinter as tk
18 bằng cách sử dụng >>> import tkinter as tk
70. Tuy nhiên, gọi >>> import tkinter as tk
70 mà không có đối số sẽ không trả về toàn bộ văn bản trong hộp văn bản giống như đối với các tiện ích con >>> import tkinter as tk
17. It raises an exception>>>
>>> window = tk.Tk[]
8>>> window = tk.Tk[]
34 yêu cầu ít nhất một đối số. Gọi >>> import tkinter as tk
70 với một chỉ số trả về một ký tự đơn. Để truy xuất một số ký tự, bạn cần chuyển chỉ mục bắt đầu và chỉ mục kết thúc. Các chỉ số trong tiện ích con >>> import tkinter as tk
18 hoạt động khác với trong tiện ích con >>> import tkinter as tk
17. Vì các tiện ích >>> import tkinter as tk
18 có thể có nhiều dòng văn bản nên một chỉ mục phải chứa hai mẩu thông tin- Số dòng của một ký tự
- Vị trí của một ký tự trên dòng đó
Số dòng bắt đầu bằng
>>> window = tk.Tk[]
39 và vị trí ký tự bắt đầu bằng >>> import tkinter as tk
52. To make an index, you create a string of the form >>> window = tk.Tk[]
41, replacing >>> window = tk.Tk[]
42 with the line number and >>> window = tk.Tk[]
43 with the character number. Ví dụ: >>> window = tk.Tk[]
44 đại diện cho ký tự đầu tiên trên dòng đầu tiên và >>> window = tk.Tk[]
45 đại diện cho ký tự thứ tư trên dòng thứ haiSử dụng chỉ số
>>> window = tk.Tk[]
44 để lấy chữ cái đầu tiên từ hộp văn bản mà bạn đã tạo trước đó>>>
>>> window = tk.Tk[]
9Có năm chữ cái trong từ
>>> window = tk.Tk[]
27 và số ký tự của >>> window = tk.Tk[]
48 là >>> window = tk.Tk[]
49, vì số ký tự bắt đầu từ >>> import tkinter as tk
52 và từ >>> window = tk.Tk[]
27 bắt đầu ở vị trí đầu tiên trong hộp văn bản. Cũng giống như với Python string slice, để có được toàn bộ từ >>> window = tk.Tk[]
27 từ hộp văn bản, chỉ số kết thúc phải nhiều hơn một chỉ số của ký tự cuối cùng được đọcVì vậy, để lấy từ
>>> window = tk.Tk[]
27 từ hộp văn bản, hãy sử dụng >>> window = tk.Tk[]
44 cho chỉ mục đầu tiên và >>> window = tk.Tk[]
55 cho chỉ mục thứ hai>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
0Để có từ
>>> window = tk.Tk[]
28 trên dòng thứ hai của hộp văn bản, hãy thay đổi số dòng trong mỗi chỉ mục thành >>> window = tk.Tk[]
57>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
1Để lấy tất cả văn bản trong một hộp văn bản, hãy đặt chỉ mục bắt đầu bằng
>>> window = tk.Tk[]
44 và sử dụng hằng số đặc biệt >>> import tkinter as tk
99 cho chỉ mục thứ hai>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
2Lưu ý rằng văn bản được trả về bởi
>>> import tkinter as tk
70 bao gồm mọi ký tự xuống dòng. Bạn cũng có thể thấy từ ví dụ này rằng mọi dòng trong tiện ích con >>> import tkinter as tk
18 đều có ký tự xuống dòng ở cuối, bao gồm dòng văn bản cuối cùng trong hộp văn bản>>> import tkinter as tk
71 được sử dụng để xóa các ký tự khỏi hộp văn bản. Nó hoạt động giống như >>> import tkinter as tk
71 cho các vật dụng >>> import tkinter as tk
17. There are two ways to use >>> import tkinter as tk
71- Với một đối số duy nhất
- Với hai đối số
Sử dụng phiên bản một đối số, bạn chuyển tới
>>> import tkinter as tk
71 chỉ mục của một ký tự cần xóa. Ví dụ: sau đây xóa ký tự đầu tiên, >>> window = tk.Tk[]
67, khỏi hộp văn bản>>> ____9_______3
Dòng văn bản đầu tiên trong cửa sổ hiện là
>>> window = tk.Tk[]
68Với phiên bản hai đối số, bạn chuyển hai chỉ mục để xóa một dải ký tự bắt đầu từ chỉ mục đầu tiên và tối đa nhưng không bao gồm chỉ mục thứ hai
Ví dụ: để xóa
>>> window = tk.Tk[]
68 còn lại trên dòng đầu tiên của hộp văn bản, hãy sử dụng các chỉ số >>> window = tk.Tk[]
44 và >>> window = tk.Tk[]
71>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
4Lưu ý rằng văn bản đã biến mất từ dòng đầu tiên. Điều này để lại một dòng trống theo sau từ
>>> window = tk.Tk[]
28 trên dòng thứ haiMặc dù bạn không thể nhìn thấy nó, vẫn có một ký tự trên dòng đầu tiên. Đó là một ký tự xuống dòng. Bạn có thể xác minh điều này bằng cách sử dụng
>>> import tkinter as tk
70>>> ____9_______5
Nếu bạn xóa ký tự đó, thì phần còn lại của nội dung trong hộp văn bản sẽ dịch chuyển lên một dòng
>>> ____9_______3
Bây giờ,
>>> window = tk.Tk[]
28 ở dòng đầu tiên của hộp văn bảnCố gắng xóa phần còn lại của văn bản trong hộp văn bản. Đặt
>>> window = tk.Tk[]
44 làm chỉ mục bắt đầu và sử dụng >>> import tkinter as tk
99 cho chỉ mục thứ hai>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
7Hộp văn bản hiện trống
Bạn có thể chèn văn bản vào hộp văn bản bằng cách sử dụng
>>> import tkinter as tk
72>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
8Thao tác này sẽ chèn từ
>>> window = tk.Tk[]
27 vào đầu hộp văn bản, sử dụng cùng định dạng >>> window = tk.Tk[]
79 được sử dụng bởi >>> import tkinter as tk
70 để chỉ định vị trí chènHãy xem điều gì sẽ xảy ra nếu bạn cố gắng chèn từ
>>> window = tk.Tk[]
28 vào dòng thứ hai>>>
>>> greeting = tk.Label[text="Hello, Tkinter"]
9Thay vì chèn văn bản vào dòng thứ hai, văn bản được chèn vào cuối dòng đầu tiên
Nếu bạn muốn chèn văn bản vào một dòng mới, thì bạn cần chèn ký tự xuống dòng theo cách thủ công vào chuỗi được chèn
>>>
>>> greeting.pack[]
0Bây giờ
>>> window = tk.Tk[]
28 ở dòng thứ hai của hộp văn bản>>> import tkinter as tk
72 sẽ làm một trong hai việc- Chèn văn bản vào vị trí đã chỉ định nếu đã có văn bản tại hoặc sau vị trí đó
- Nối văn bản vào dòng đã chỉ định nếu số ký tự lớn hơn chỉ mục của ký tự cuối cùng trong hộp văn bản
Việc cố gắng theo dõi chỉ số của ký tự cuối cùng thường là không thực tế. Cách tốt nhất để chèn văn bản vào cuối tiện ích con
>>> import tkinter as tk
18 là chuyển >>> import tkinter as tk
99 cho tham số đầu tiên của >>> import tkinter as tk
72>>>
>>> greeting.pack[]
1Đừng quên bao gồm ký tự xuống dòng [
>>> window = tk.Tk[]
87] ở đầu văn bản nếu bạn muốn đặt nó trên một dòng mới>>>
>>> greeting.pack[]
2Các widget
>>> import tkinter as tk
05, >>> import tkinter as tk
16, >>> import tkinter as tk
17 và >>> import tkinter as tk
18 chỉ là một vài trong số các widget có sẵn trong Tkinter. Có một số thứ khác, bao gồm các vật dụng cho hộp kiểm, nút radio, thanh cuộn và thanh tiến trình. Để biết thêm thông tin về tất cả các tiện ích có sẵn, hãy xem danh sách Tiện ích bổ sung trong phầnRemove adsGán Widget cho khung với >>> import tkinter as tk
19 Widget
>>> import tkinter as tk
Trong hướng dẫn này, bạn sẽ chỉ làm việc với năm vật dụng
05>>> import tkinter as tk
16>>> import tkinter as tk
17>>> import tkinter as tk
18>>> import tkinter as tk
19>>> import tkinter as tk
Đây là bốn tiện ích mà bạn đã thấy cho đến nay cùng với tiện ích
>>> import tkinter as tk
19. >>> import tkinter as tk
19 widget rất quan trọng để tổ chức bố cục các widget của bạn trong một ứng dụngTrước khi bạn tìm hiểu chi tiết về cách trình bày trực quan các tiện ích con của mình, hãy xem kỹ cách thức hoạt động của
>>> import tkinter as tk
19 tiện ích con và cách bạn có thể gán các tiện ích con khác cho chúng. Tập lệnh sau tạo một tiện ích >>> import tkinter as tk
19 trống và gán nó cho cửa sổ ứng dụng chính>>> greeting.pack[]
3>>> greeting = tk.Label[text="Hello, Tkinter"]
02 đóng khung vào cửa sổ sao cho cửa sổ có kích thước nhỏ nhất có thể để bao quanh khung. Khi bạn chạy đoạn mã trên, bạn nhận được một số kết quả không thú vị lắmMột tiện ích
>>> import tkinter as tk
19 trống thực tế là vô hình. Khung tốt nhất nên được coi là vật chứa cho các vật dụng khác. Bạn có thể gán tiện ích cho khung bằng cách đặt thuộc tính >>> greeting = tk.Label[text="Hello, Tkinter"]
04 của tiện ích>>> greeting.pack[]
4Để có cảm nhận về cách thức hoạt động của tính năng này, hãy viết một kịch bản tạo hai tiện ích con
>>> import tkinter as tk
19 có tên là >>> greeting = tk.Label[text="Hello, Tkinter"]
06 và >>> greeting = tk.Label[text="Hello, Tkinter"]
07. Trong tập lệnh này, >>> greeting = tk.Label[text="Hello, Tkinter"]
06 chứa nhãn có nội dung >>> greeting = tk.Label[text="Hello, Tkinter"]
09 và >>> greeting = tk.Label[text="Hello, Tkinter"]
07 chứa nhãn >>> greeting = tk.Label[text="Hello, Tkinter"]
11. Đây là một cách để làm điều này>>> greeting.pack[]
5Lưu ý rằng
>>> greeting = tk.Label[text="Hello, Tkinter"]
06 được đóng gói vào cửa sổ trước >>> greeting = tk.Label[text="Hello, Tkinter"]
07. Cửa sổ mở ra hiển thị nhãn ở >>> greeting = tk.Label[text="Hello, Tkinter"]
06 phía trên nhãn ở >>> greeting = tk.Label[text="Hello, Tkinter"]
07Bây giờ hãy xem điều gì sẽ xảy ra khi bạn hoán đổi thứ tự của
>>> greeting = tk.Label[text="Hello, Tkinter"]
16 và >>> greeting = tk.Label[text="Hello, Tkinter"]
17>>> greeting.pack[]
6Đầu ra trông như thế này
Bây giờ
>>> greeting = tk.Label[text="Hello, Tkinter"]
18 đang ở trên cùng. Vì >>> greeting = tk.Label[text="Hello, Tkinter"]
18 được gán cho >>> greeting = tk.Label[text="Hello, Tkinter"]
07, nên nó sẽ di chuyển đến bất cứ vị trí nào của >>> greeting = tk.Label[text="Hello, Tkinter"]
07Tất cả bốn loại tiện ích mà bạn đã tìm hiểu—_______1_______05,
>>> import tkinter as tk
16, >>> import tkinter as tk
17 và >>> import tkinter as tk
18—đều có thuộc tính >>> greeting = tk.Label[text="Hello, Tkinter"]
04 được đặt khi bạn khởi tạo chúng. Bằng cách đó, bạn có thể kiểm soát >>> import tkinter as tk
19 tiện ích nào được gán cho. >>> import tkinter as tk
19 vật dụng rất phù hợp để tổ chức các vật dụng khác một cách hợp lý. Các tiện ích liên quan có thể được gán cho cùng một khung sao cho nếu khung được di chuyển trong cửa sổ thì các tiện ích liên quan sẽ ở cùng nhauGhi chú. Nếu bạn bỏ qua đối số
>>> greeting = tk.Label[text="Hello, Tkinter"]
04 khi tạo một phiên bản tiện ích con mới, thì theo mặc định, nó sẽ được đặt bên trong cửa sổ cấp cao nhấtIn addition to grouping your widgets logically,
>>> import tkinter as tk
19 widgets can add a little flare to the visual presentation of your application. Read on to see how to create various borders for >>> import tkinter as tk
19 widgetsRemove adsĐiều chỉnh giao diện khung hình với hình phù điêu
>>> import tkinter as tk
19 widgets can be configured with a >>> greeting = tk.Label[text="Hello, Tkinter"]
33 attribute that creates a border around the frame. Bạn có thể đặt >>> greeting = tk.Label[text="Hello, Tkinter"]
33 thành bất kỳ giá trị nào sau đây
35. Không có hiệu ứng viền [giá trị mặc định]>>> greeting = tk.Label[text="Hello, Tkinter"]
36. Tạo hiệu ứng chìm>>> greeting = tk.Label[text="Hello, Tkinter"]
37. Tạo hiệu ứng nâng cao>>> greeting = tk.Label[text="Hello, Tkinter"]
38. Tạo hiệu ứng đường viền có rãnh>>> greeting = tk.Label[text="Hello, Tkinter"]
39. Tạo hiệu ứng gợn sóng>>> greeting = tk.Label[text="Hello, Tkinter"]
Để áp dụng hiệu ứng đường viền, bạn phải đặt thuộc tính
>>> greeting = tk.Label[text="Hello, Tkinter"]
40 thành giá trị lớn hơn >>> window = tk.Tk[]
39. This attribute adjusts the width of the border in pixels. Cách tốt nhất để cảm nhận từng hiệu ứng trông như thế nào là tự mình xem chúng. Đây là một tập lệnh gói năm tiện ích con >>> import tkinter as tk
19 vào một cửa sổ, mỗi tiện ích có một giá trị khác nhau cho đối số >>> greeting = tk.Label[text="Hello, Tkinter"]
33>>> greeting.pack[]
7Đây là một sự cố của kịch bản này
Dòng 3 đến 9 tạo một từ điển có khóa là tên của các hiệu ứng nổi khác nhau có sẵn trong Tkinter. Các giá trị là các đối tượng Tkinter tương ứng. Từ điển này được gán cho biến
44>>> greeting = tk.Label[text="Hello, Tkinter"]
Dòng 13 bắt đầu một vòng lặp
45 để lặp qua từng mục trong từ điển>>> greeting = tk.Label[text="Hello, Tkinter"]
44>>> greeting = tk.Label[text="Hello, Tkinter"]
Dòng 14 tạo một tiện ích
19 mới và gán nó cho đối tượng>>> import tkinter as tk
03. Thuộc tính>>> import tkinter as tk
33 được đặt thành hình nổi tương ứng trong từ điển>>> greeting = tk.Label[text="Hello, Tkinter"]
44 và thuộc tính>>> greeting = tk.Label[text="Hello, Tkinter"]
51 được đặt thành>>> greeting = tk.Label[text="Hello, Tkinter"]
61 để có thể nhìn thấy hiệu ứng>>> import tkinter as tk
Dòng 15 gói
19 vào cửa sổ bằng cách sử dụng>>> import tkinter as tk
10. Đối số từ khóa>>> import tkinter as tk
55 cho Tkinter biết hướng đóng gói các đối tượng>>> greeting = tk.Label[text="Hello, Tkinter"]
56. Bạn sẽ thấy nhiều hơn về cách thức hoạt động của nó trong phần tiếp theo>>> greeting = tk.Label[text="Hello, Tkinter"]
Dòng 16 và 17 tạo tiện ích
05 để hiển thị tên của bức phù điêu và đóng gói nó vào đối tượng>>> import tkinter as tk
56 mà bạn vừa tạo>>> greeting = tk.Label[text="Hello, Tkinter"]
Cửa sổ được tạo bởi tập lệnh trên trông như thế này
Trong hình ảnh này, bạn có thể thấy các hiệu ứng sau
35 creates a frame that appears to be flat>>> greeting = tk.Label[text="Hello, Tkinter"]
36 adds a border that gives the frame the appearance of being sunken into the window>>> greeting = tk.Label[text="Hello, Tkinter"]
37 tạo cho khung một đường viền khiến nó có vẻ nhô ra khỏi màn hình>>> greeting = tk.Label[text="Hello, Tkinter"]
38 thêm đường viền xuất hiện dưới dạng rãnh trũng xung quanh khung phẳng khác>>> greeting = tk.Label[text="Hello, Tkinter"]
39 tạo ra hình ảnh môi nhô lên xung quanh mép khung>>> greeting = tk.Label[text="Hello, Tkinter"]
Những hiệu ứng này mang lại cho ứng dụng Python GUI Tkinter của bạn một chút hấp dẫn trực quan
Hiểu các quy ước đặt tên widget
Khi bạn tạo một tiện ích, bạn có thể đặt cho nó bất kỳ tên nào bạn thích, miễn là đó là mã định danh Python hợp lệ. Thông thường, bạn nên đưa tên của lớp tiện ích con vào tên biến mà bạn gán cho thể hiện tiện ích con. Ví dụ: nếu một tiện ích con
>>> import tkinter as tk
05 được sử dụng để hiển thị tên của người dùng, thì bạn có thể đặt tên cho tiện ích con đó là >>> greeting = tk.Label[text="Hello, Tkinter"]
65. Tiện ích >>> import tkinter as tk
17 được sử dụng để thu thập tuổi của người dùng có thể được gọi là >>> greeting = tk.Label[text="Hello, Tkinter"]
67Ghi chú. Đôi khi, bạn có thể xác định một widget mới mà không gán nó cho một biến. Bạn sẽ gọi trực tiếp phương thức
>>> import tkinter as tk
10 của nó trên cùng một dòng mã>>>
>>> greeting.pack[]
8Điều này có thể hữu ích khi bạn không có ý định tham khảo phiên bản của tiện ích sau này. Do quản lý bộ nhớ tự động, Python thường sẽ là các đối tượng chưa được gán như vậy, nhưng Tkinter ngăn chặn điều đó bằng cách đăng ký nội bộ mọi tiện ích mới
Khi bạn bao gồm tên lớp widget trong tên biến, bạn sẽ giúp chính mình và bất kỳ ai khác cần đọc mã của bạn để hiểu loại widget mà tên biến đề cập đến. Tuy nhiên, việc sử dụng tên đầy đủ của lớp tiện ích có thể dẫn đến tên biến dài, vì vậy bạn có thể muốn sử dụng cách viết tắt để chỉ từng loại tiện ích. Đối với phần còn lại của hướng dẫn này, bạn sẽ sử dụng các tiền tố tốc ký sau để đặt tên cho các widget
Widget ClassVariable Name PrefixExample
>>> import tkinter as tk
05>>> greeting = tk.Label[text="Hello, Tkinter"]
70>>> greeting = tk.Label[text="Hello, Tkinter"]
71>>> import tkinter as tk
16>>> greeting = tk.Label[text="Hello, Tkinter"]
73>>> greeting = tk.Label[text="Hello, Tkinter"]
74>>> import tkinter as tk
17>>> greeting = tk.Label[text="Hello, Tkinter"]
76>>> greeting = tk.Label[text="Hello, Tkinter"]
77>>> import tkinter as tk
18>>> greeting = tk.Label[text="Hello, Tkinter"]
79>>> greeting = tk.Label[text="Hello, Tkinter"]
80>>> import tkinter as tk
19>>> greeting = tk.Label[text="Hello, Tkinter"]
82>>> greeting = tk.Label[text="Hello, Tkinter"]
83Trong phần này, bạn đã học cách tạo cửa sổ, sử dụng tiện ích con và làm việc với khung. Tại thời điểm này, bạn có thể tạo một số cửa sổ đơn giản hiển thị thông báo, nhưng bạn vẫn chưa tạo một ứng dụng toàn diện. Trong phần tiếp theo, bạn sẽ tìm hiểu cách kiểm soát bố cục ứng dụng của mình bằng trình quản lý hình học mạnh mẽ của Tkinter
Check Your Understanding
Mở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn
Tập thể dục. Tạo tiện ích Mục nhập và chèn một số văn bảnHiển thị/Ẩn
Viết một tập lệnh hoàn chỉnh hiển thị một tiện ích
>>> import tkinter as tk
17 rộng 40 đơn vị văn bản và có nền trắng và văn bản đen. Sử dụng >>> import tkinter as tk
72 để hiển thị văn bản trong tiện ích có nội dung >>> greeting = tk.Label[text="Hello, Tkinter"]
86Cửa sổ đầu ra sẽ trông như thế này
Try this exercise now
You can expand the code block below to see a solution
Giải pháp. Tạo tiện ích Mục nhập và chèn một số văn bảnHiển thị/Ẩn
There are a couple of ways to solve this exercise. Đây là một giải pháp sử dụng các tham số
>>> import tkinter as tk
48 và >>> import tkinter as tk
47 để đặt màu nền và màu nền trước của tiện ích >>> import tkinter as tk
17>>> greeting.pack[]
9Giải pháp này rất tuyệt vì nó đặt rõ ràng màu nền và màu nền trước cho tiện ích
>>> import tkinter as tk
17Trên hầu hết các hệ thống, màu nền mặc định cho tiện ích
>>> import tkinter as tk
17 là màu trắng và màu nền trước mặc định là màu đen. So, you might be able to generate the same window with the >>> import tkinter as tk
48 and >>> import tkinter as tk
47 parameters left out>>> window.mainloop[]
0Keep in mind your code may look different
When you’re ready, you can move on to the next section
Remove adsKiểm soát bố cục với Trình quản lý hình học
Cho đến bây giờ, bạn đã thêm tiện ích con vào cửa sổ và
>>> import tkinter as tk
19 tiện ích con bằng cách sử dụng >>> import tkinter as tk
10, nhưng bạn chưa biết chính xác phương pháp này làm gì. Hãy làm sáng tỏ mọi thứ. Bố cục ứng dụng trong Tkinter được kiểm soát bằng trình quản lý hình học. Mặc dù >>> import tkinter as tk
10 là một ví dụ về trình quản lý hình học, nhưng đây không phải là ví dụ duy nhất. Tkinter có hai người khác
97>>> greeting = tk.Label[text="Hello, Tkinter"]
98>>> greeting = tk.Label[text="Hello, Tkinter"]
Mỗi cửa sổ hoặc
>>> import tkinter as tk
19 trong ứng dụng của bạn chỉ có thể sử dụng một trình quản lý hình học. Tuy nhiên, các khung khác nhau có thể sử dụng các trình quản lý hình học khác nhau, ngay cả khi chúng được gán cho một khung hoặc cửa sổ bằng trình quản lý hình học khác. Bắt đầu bằng cách xem xét kỹ hơn về >>> import tkinter as tk
10Trình quản lý Hình học >>> import tkinter as tk
10
>>> import tkinter as tk
Trình quản lý hình học
>>> import tkinter as tk
10 sử dụng thuật toán đóng gói để đặt các vật dụng trong một >>> import tkinter as tk
19 hoặc cửa sổ theo một thứ tự cụ thể. Đối với một widget nhất định, thuật toán đóng gói có hai bước chính- Compute a rectangular area called a parcel that’s just tall [or wide] enough to hold the widget and fills the remaining width [or height] in the window with blank space
- Căn giữa tiện ích con trong bưu kiện trừ khi một vị trí khác được chỉ định
>>> import tkinter as tk
10 rất mạnh, nhưng có thể khó hình dung. The best way to get a feel for >>> import tkinter as tk
10 is to look at some examples. Xem điều gì sẽ xảy ra khi bạn >>> import tkinter as tk
10 ba vật dụng >>> import tkinter as tk
05 thành một >>> import tkinter as tk
19>>> window.mainloop[]
1Theo mặc định,
>>> import tkinter as tk
10 đặt mỗi >>> import tkinter as tk
19 bên dưới cái trước đó, theo thứ tự chúng được gán cho cửa sổMỗi
>>> import tkinter as tk
19 được đặt ở vị trí cao nhất có sẵn. Do đó, >>> import tkinter as tk
19 màu đỏ được đặt ở đầu cửa sổ. Sau đó, >>> import tkinter as tk
19 màu vàng được đặt ngay bên dưới màu đỏ và >>> import tkinter as tk
19 màu xanh ngay bên dưới màu vàngCó ba bưu kiện vô hình, mỗi bưu kiện chứa một trong ba vật dụng
>>> import tkinter as tk
19. Mỗi bưu kiện rộng bằng cửa sổ và cao bằng >>> import tkinter as tk
19 mà nó chứa. Bởi vì không có điểm neo nào được chỉ định khi >>> import tkinter as tk
10 được gọi cho mỗi >>> greeting.pack[]
18, tất cả chúng đều nằm ở giữa các bưu kiện của chúng. Đó là lý do tại sao mỗi >>> import tkinter as tk
19 được căn giữa trong cửa sổ>>> import tkinter as tk
10 chấp nhận một số đối số từ khóa để định cấu hình vị trí tiện ích con chính xác hơn. Ví dụ: bạn có thể đặt đối số từ khóa >>> greeting.pack[]
21 để chỉ định hướng mà các khung sẽ điền vào. Các tùy chọn là >>> greeting.pack[]
22 để điền theo hướng ngang, >>> greeting.pack[]
23 để điền theo chiều dọc và >>> greeting.pack[]
24 để điền theo cả hai hướng. Đây là cách bạn xếp chồng ba khung sao cho mỗi khung lấp đầy toàn bộ cửa sổ theo chiều ngang>>> window.mainloop[]
2Lưu ý rằng
>>> import tkinter as tk
49 không được đặt trên bất kỳ tiện ích con nào của >>> import tkinter as tk
19. >>> import tkinter as tk
49 không còn cần thiết vì mỗi khung đặt >>> import tkinter as tk
10 để lấp đầy theo chiều ngang, ghi đè bất kỳ chiều rộng nào bạn có thể đặtCửa sổ được tạo bởi tập lệnh này trông như thế này
Một trong những điều thú vị khi lấp đầy cửa sổ bằng
>>> import tkinter as tk
10 là phần lấp đầy phản ứng nhanh với việc thay đổi kích thước cửa sổ. Try widening the window generated by the previous script to see how this works. As you widen the window, the width of the three >>> import tkinter as tk
19 widgets grow to fill the windowNotice, though, that the
>>> import tkinter as tk
19 widgets don’t expand in the vertical directionThe
>>> greeting = tk.Label[text="Hello, Tkinter"]
55 keyword argument of >>> import tkinter as tk
10 specifies on which side of the window the widget should be placed. These are the available options
34>>> greeting.pack[]
35>>> greeting.pack[]
36>>> greeting.pack[]
37>>> greeting.pack[]
If you don’t set
>>> greeting = tk.Label[text="Hello, Tkinter"]
55, then >>> import tkinter as tk
10 will automatically use >>> greeting.pack[]
34 and place new widgets at the top of the window, or at the topmost portion of the window that isn’t already occupied by a widget. For example, the following script places three frames side by side from left to right and expands each frame to fill the window vertically>>> window.mainloop[]
3This time, you have to specify the
>>> import tkinter as tk
50 keyword argument on at least one of the frames to force the window to have some heightThe resulting window looks like this
Giống như khi bạn đặt
>>> greeting.pack[]
42 để làm cho khung phản hồi khi bạn thay đổi kích thước cửa sổ theo chiều ngang, bạn có thể đặt >>> greeting.pack[]
43 để làm cho khung phản hồi khi bạn thay đổi kích thước cửa sổ theo chiều dọcĐể làm cho bố cục thực sự đáp ứng, bạn có thể đặt kích thước ban đầu cho khung của mình bằng cách sử dụng các thuộc tính
>>> import tkinter as tk
49 và >>> import tkinter as tk
50. Sau đó, đặt đối số từ khóa >>> greeting.pack[]
21 của >>> import tkinter as tk
10 thành >>> greeting.pack[]
24 và đặt đối số từ khóa >>> greeting.pack[]
49 thành >>> greeting.pack[]
50>>> window.mainloop[]
4When you run the above script, you’ll see a window that initially looks the same as the one you generated in the previous example. Sự khác biệt là bây giờ bạn có thể thay đổi kích thước cửa sổ theo cách bạn muốn và các khung sẽ mở rộng và lấp đầy cửa sổ một cách thích ứng
Tuyệt đấy
Remove adsTrình quản lý Hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
97
>>> greeting = tk.Label[text="Hello, Tkinter"]
Bạn có thể sử dụng
>>> greeting = tk.Label[text="Hello, Tkinter"]
97 để kiểm soát vị trí chính xác mà tiện ích sẽ chiếm trong cửa sổ hoặc >>> import tkinter as tk
19. You must provide two keyword arguments, >>> greeting.pack[]
54 and >>> greeting.pack[]
55, which specify the x- and y-coordinates for the top-left corner of the widget. Cả >>> greeting.pack[]
54 và >>> greeting.pack[]
55 đều được đo bằng pixel, không phải đơn vị văn bảnHãy nhớ rằng gốc tọa độ, trong đó
>>> greeting.pack[]
54 và >>> greeting.pack[]
55 đều là >>> import tkinter as tk
52, là góc trên cùng bên trái của >>> import tkinter as tk
19 hoặc cửa sổ. So, you can think of the >>> greeting.pack[]
55 argument of >>> greeting = tk.Label[text="Hello, Tkinter"]
97 as the number of pixels from the top of the window, and the >>> greeting.pack[]
54 argument as the number of pixels from the left edge of the windowĐây là một ví dụ về cách hoạt động của trình quản lý hình học
>>> greeting = tk.Label[text="Hello, Tkinter"]
97>>> window.mainloop[]
5Đây là cách mã này hoạt động
- Dòng 5 và 6 tạo một tiện ích con
19 mới có tên là>>> import tkinter as tk
56, có chiều rộng>>> greeting = tk.Label[text="Hello, Tkinter"]
68 pixel và chiều cao>>> greeting.pack[]
68 pixel, và đặt nó vào cửa sổ với>>> greeting.pack[]
10>>> import tkinter as tk
- Dòng 8 và 9 tạo một
05 mới có tên là>>> import tkinter as tk
72 với nền đỏ và đặt nó vào>>> greeting.pack[]
73 tại vị trí [0, 0]>>> greeting.pack[]
- Lines 11 and 12 create a second
05 called>>> import tkinter as tk
75 with a yellow background and place it in>>> greeting.pack[]
73 at position [75, 75]>>> greeting.pack[]
Here’s the window that the code produces
Lưu ý rằng nếu bạn chạy mã này trên một hệ điều hành khác sử dụng các kiểu và cỡ phông chữ khác nhau thì nhãn thứ hai có thể bị che khuất một phần bởi cạnh của cửa sổ. Đó là lý do tại sao
>>> greeting = tk.Label[text="Hello, Tkinter"]
97 không được sử dụng thường xuyên. Thêm vào đó, nó có hai nhược điểm chính- Bố cục có thể khó quản lý với
97. This is especially true if your application has lots of widgets>>> greeting = tk.Label[text="Hello, Tkinter"]
- Bố cục được tạo bằng
97 không phản hồi. Chúng không thay đổi khi cửa sổ được thay đổi kích thước>>> greeting = tk.Label[text="Hello, Tkinter"]
Một trong những thách thức chính của việc phát triển GUI đa nền tảng là làm cho bố cục trông đẹp mắt bất kể chúng được xem trên nền tảng nào và
>>> greeting = tk.Label[text="Hello, Tkinter"]
97 là một lựa chọn tồi để tạo bố cục đáp ứng và đa nền tảngĐiều đó không có nghĩa là bạn không bao giờ nên sử dụng
>>> greeting = tk.Label[text="Hello, Tkinter"]
97. Trong một số trường hợp, nó có thể chỉ là những gì bạn cần. Ví dụ: nếu bạn đang tạo giao diện GUI cho bản đồ, thì >>> greeting = tk.Label[text="Hello, Tkinter"]
97 có thể là lựa chọn hoàn hảo để đảm bảo các tiện ích con được đặt ở khoảng cách chính xác với nhau trên bản đồ>>> import tkinter as tk
10 thường là lựa chọn tốt hơn so với >>> greeting = tk.Label[text="Hello, Tkinter"]
97, nhưng ngay cả >>> import tkinter as tk
10 cũng có một số nhược điểm. Vị trí của các widget phụ thuộc vào thứ tự mà >>> import tkinter as tk
10 được gọi, vì vậy có thể khó sửa đổi các ứng dụng hiện có mà không hiểu đầy đủ về mã kiểm soát bố cục. Trình quản lý hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
98 giải quyết rất nhiều vấn đề này, như bạn sẽ thấy trong phần tiếp theoThe >>> greeting = tk.Label[text="Hello, Tkinter"]
98 Geometry Manager
>>> greeting = tk.Label[text="Hello, Tkinter"]
Trình quản lý hình học mà bạn có thể sẽ sử dụng thường xuyên nhất là
>>> greeting = tk.Label[text="Hello, Tkinter"]
98, cung cấp tất cả sức mạnh của >>> import tkinter as tk
10 ở định dạng dễ hiểu và dễ bảo trì hơn>>> greeting = tk.Label[text="Hello, Tkinter"]
98 hoạt động bằng cách tách một cửa sổ hoặc >>> import tkinter as tk
19 thành các hàng và cột. Bạn chỉ định vị trí của tiện ích con bằng cách gọi >>> greeting = tk.Label[text="Hello, Tkinter"]
98 và chuyển các chỉ số hàng và cột cho các đối số từ khóa >>> greeting.pack[]
94 và >>> greeting.pack[]
95 tương ứng. Cả chỉ số hàng và cột đều bắt đầu từ >>> import tkinter as tk
52, vì vậy chỉ số hàng là >>> window = tk.Tk[]
39 và chỉ mục cột là >>> window = tk.Tk[]
57 cho biết >>> greeting = tk.Label[text="Hello, Tkinter"]
98 để đặt một tiện ích vào cột thứ ba của hàng thứ haiTập lệnh sau tạo một lưới khung 3 × 3 với các tiện ích
>>> import tkinter as tk
05 được đóng gói trong đó>>> window.mainloop[]
6Here’s what the resulting window looks like
Bạn đang sử dụng hai trình quản lý hình học trong ví dụ này. Each frame is attached to
>>> import tkinter as tk
03 with the >>> greeting = tk.Label[text="Hello, Tkinter"]
98 geometry manager>>> window.mainloop[]
7Mỗi
>>> window.mainloop[]
03 được gắn với chủ của nó là >>> import tkinter as tk
19 với >>> import tkinter as tk
10>>> window.mainloop[]
8Điều quan trọng cần nhận ra ở đây là mặc dù
>>> greeting = tk.Label[text="Hello, Tkinter"]
98 được gọi trên mỗi đối tượng >>> import tkinter as tk
19, trình quản lý hình học áp dụng cho đối tượng >>> import tkinter as tk
03. Similarly, the layout of each >>> greeting = tk.Label[text="Hello, Tkinter"]
56 is controlled with the >>> import tkinter as tk
10 geometry managerThe frames in the previous example are placed tightly next to one another. Để thêm một số khoảng trống xung quanh mỗi khung, bạn có thể đặt phần đệm của từng ô trong lưới. Phần đệm chỉ là một số khoảng trống bao quanh một tiện ích và làm nổi bật nội dung của nó một cách trực quan
The two types of padding are external and internal padding. External padding adds some space around the outside of a grid cell. It’s controlled with two keyword arguments to
>>> greeting = tk.Label[text="Hello, Tkinter"]
98
12 thêm phần đệm theo hướng ngang>>> window.mainloop[]
13 adds padding in the vertical direction>>> window.mainloop[]
Cả
>>> window.mainloop[]
12 và >>> window.mainloop[]
13 đều được đo bằng pixel, không phải đơn vị văn bản, do đó, việc đặt cả hai giá trị thành cùng một giá trị sẽ tạo ra cùng một lượng khoảng đệm theo cả hai hướng. Cố gắng thêm một số phần đệm xung quanh bên ngoài khung từ ví dụ trước>>> window.mainloop[]
9Đây là cửa sổ kết quả
>>> import tkinter as tk
10 also has >>> window.mainloop[]
12 and >>> window.mainloop[]
13 parameters. Đoạn mã sau gần giống với đoạn mã trước, ngoại trừ việc bạn thêm 5 điểm ảnh đệm bổ sung xung quanh mỗi nhãn theo cả hai hướng >>> greeting.pack[]
54 và >>> greeting.pack[]
55import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
0Phần đệm bổ sung xung quanh các tiện ích
>>> import tkinter as tk
05 cung cấp cho mỗi ô trong lưới một chút khoảng trống giữa đường viền >>> import tkinter as tk
19 và văn bản trong nhãnThat looks pretty nice. Nhưng nếu bạn thử mở rộng cửa sổ theo bất kỳ hướng nào, thì bạn sẽ nhận thấy rằng bố cục không phản hồi tốt lắm
Toàn bộ lưới nằm ở góc trên cùng bên trái khi cửa sổ mở rộng
Bằng cách sử dụng
>>> window.mainloop[]
23 và >>> window.mainloop[]
24 trên đối tượng >>> import tkinter as tk
03, bạn có thể điều chỉnh cách các hàng và cột của lưới phát triển khi cửa sổ được thay đổi kích thước. Hãy nhớ rằng, lưới được gắn vào >>> import tkinter as tk
03, mặc dù bạn đang gọi >>> greeting = tk.Label[text="Hello, Tkinter"]
98 trên mỗi tiện ích >>> import tkinter as tk
19. Both >>> window.mainloop[]
23 and >>> window.mainloop[]
24 take three essential arguments- Mục lục. Chỉ mục của hàng hoặc cột lưới mà bạn muốn định cấu hình hoặc danh sách các chỉ mục để định cấu hình nhiều hàng hoặc cột cùng một lúc
- Cân nặng. Một đối số từ khóa có tên là
31 xác định cách cột hoặc hàng sẽ phản ứng với việc thay đổi kích thước cửa sổ, so với các cột và hàng khác>>> window.mainloop[]
- Kích cỡ nhỏ nhất. A keyword argument called
32 that sets the minimum size of the row height or column width in pixels>>> window.mainloop[]
>>> window.mainloop[]
31 được đặt thành >>> import tkinter as tk
52 theo mặc định, điều đó có nghĩa là cột hoặc hàng không mở rộng khi cửa sổ thay đổi kích thước. Nếu mỗi cột hoặc hàng được cho trọng số là >>> window = tk.Tk[]
39, thì tất cả chúng đều tăng trưởng với tốc độ như nhau. If one column has a weight of >>> window = tk.Tk[]
39 and another a weight of >>> window = tk.Tk[]
57, then the second column expands at twice the rate of the first. Điều chỉnh tập lệnh trước đó để xử lý thay đổi kích thước cửa sổ tốt hơnimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
1>>> window.mainloop[]
23 và >>> window.mainloop[]
24 được đặt trong phần thân của vòng lặp >>> greeting = tk.Label[text="Hello, Tkinter"]
45 bên ngoài. Bạn có thể định cấu hình rõ ràng từng cột và hàng bên ngoài vòng lặp >>> greeting = tk.Label[text="Hello, Tkinter"]
45, nhưng điều đó sẽ yêu cầu viết thêm sáu dòng mãTrên mỗi lần lặp của vòng lặp, cột và hàng thứ 42 của
>>> window.mainloop[]
được định cấu hình để có trọng số là >>> window = tk.Tk[]
39. This ensures that the row and column expand at the same rate whenever the window is resized. Đối số >>> window.mainloop[]
32 được đặt thành >>> window.mainloop[]
45 cho mỗi cột và >>> import tkinter as tk
67 cho mỗi hàng. Điều này đảm bảo rằng tiện ích >>> import tkinter as tk
05 luôn hiển thị văn bản của nó mà không cắt bỏ bất kỳ ký tự nào, ngay cả khi kích thước cửa sổ cực kỳ nhỏKết quả là một bố cục dạng lưới có thể mở rộng và co lại một cách mượt mà khi cửa sổ được thay đổi kích thước
Hãy tự mình thử để cảm nhận nó hoạt động như thế nào. Chơi xung quanh với các tham số
>>> window.mainloop[]
31 và >>> window.mainloop[]
32 để xem chúng ảnh hưởng đến lưới như thế nàoTheo mặc định, các vật dụng được căn giữa trong các ô lưới của chúng. Ví dụ: đoạn mã sau tạo hai tiện ích con
>>> import tkinter as tk
05 và đặt chúng vào một lưới có một cột và hai hàngimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
2Mỗi ô lưới có chiều rộng
>>> window.mainloop[]
51 pixel và chiều cao >>> window = tk.Tk[]
06 pixel. Các nhãn được đặt ở giữa mỗi ô, như bạn có thể thấy trong hình dưới đâyBạn có thể thay đổi vị trí của từng nhãn bên trong ô lưới bằng cách sử dụng tham số
>>> window.mainloop[]
53, chấp nhận một chuỗi chứa một hoặc nhiều chữ cái sau
54 hoặc>>> window.mainloop[]
55 để căn chỉnh với phần trung tâm trên cùng của ô>>> window.mainloop[]
56 hoặc>>> window.mainloop[]
57 để căn chỉnh về phía chính giữa bên phải của ô>>> window.mainloop[]
58 hoặc>>> window.mainloop[]
59 để căn chỉnh với phần dưới cùng của ô>>> window.mainloop[]
60 or>>> window.mainloop[]
61 to align to the left-center side of the cell>>> window.mainloop[]
Các chữ cái
>>> window.mainloop[]
54, >>> window.mainloop[]
58, >>> window.mainloop[]
56 và >>> window.mainloop[]
60 đến từ các hướng chính bắc, nam, đông và tây. Đặt >>> window.mainloop[]
53 thành >>> window.mainloop[]
54 trên cả hai nhãn ở vị trí mã trước đó, mỗi nhãn ở giữa trên cùng của ô lưới của nóimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
3Đây là đầu ra
Bạn có thể kết hợp nhiều chữ cái trong một chuỗi để định vị từng nhãn ở góc ô lưới của nó
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
4Trong ví dụ này, tham số
>>> window.mainloop[]
53 của >>> greeting.pack[]
72 được đặt thành >>> window.mainloop[]
70, đặt nhãn ở góc trên cùng bên phải của ô lưới của nó. >>> greeting.pack[]
75 được định vị ở góc dưới cùng bên trái bằng cách chuyển >>> window.mainloop[]
72 đến >>> window.mainloop[]
53. Đây là những gì trông giống như trong cửa sổKhi một tiện ích được định vị bằng
>>> window.mainloop[]
53, kích thước của chính tiện ích đó chỉ đủ lớn để chứa bất kỳ văn bản nào và các nội dung khác bên trong tiện ích đó. Nó sẽ không lấp đầy toàn bộ ô lưới. Để điền vào lưới, bạn có thể chỉ định >>> window.mainloop[]
75 để buộc tiện ích điền vào ô theo hướng dọc hoặc >>> window.mainloop[]
76 để điền vào ô theo hướng ngang. Để điền vào toàn bộ ô, hãy đặt >>> window.mainloop[]
53 thành >>> window.mainloop[]
78. Ví dụ sau minh họa từng tùy chọn nàyimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
5Đây là kết quả đầu ra trông như thế nào
Điều mà ví dụ trên minh họa là tham số
>>> window.mainloop[]
53 của trình quản lý hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
98 có thể được sử dụng để đạt được hiệu quả tương tự như tham số >>> greeting.pack[]
21 của trình quản lý hình học >>> import tkinter as tk
10. Sự tương ứng giữa các tham số >>> window.mainloop[]
53 và >>> greeting.pack[]
21 được tóm tắt trong bảng sau>>> greeting = tk.Label[text="Hello, Tkinter"]
98>>> import tkinter as tk
10>>> window.mainloop[]
87>>> greeting.pack[]
43>>> window.mainloop[]
89>>> greeting.pack[]
42>>> window.mainloop[]
91>>> window.mainloop[]
92>>> greeting = tk.Label[text="Hello, Tkinter"]
98 là một trình quản lý hình học mạnh mẽ. Nó thường dễ hiểu hơn >>> import tkinter as tk
10 và linh hoạt hơn nhiều so với >>> greeting = tk.Label[text="Hello, Tkinter"]
97. Khi tạo các ứng dụng Tkinter mới, bạn nên cân nhắc sử dụng >>> greeting = tk.Label[text="Hello, Tkinter"]
98 làm trình quản lý hình học chính của mìnhGhi chú.
>>> greeting = tk.Label[text="Hello, Tkinter"]
98 mang đến sự linh hoạt hơn nhiều so với những gì bạn đã thấy ở đây. Ví dụ: bạn có thể định cấu hình ô để mở rộng nhiều hàng và cột. Để biết thêm thông tin, hãy xem phần Grid Geometry Manager của hướng dẫn TkDocsGiờ đây, bạn đã có kiến thức cơ bản về trình quản lý hình học cho khung giao diện đồ họa Python Tkinter, bước tiếp theo là gán hành động cho các nút để đưa ứng dụng của bạn vào cuộc sống
Remove adsCheck Your Understanding
Mở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn
Tập thể dục. Tạo biểu mẫu nhập địa chỉHiển thị/Ẩn
Dưới đây là hình ảnh của một biểu mẫu nhập địa chỉ được thực hiện bằng Tkinter
Viết script hoàn chỉnh tạo lại cửa sổ. Bạn có thể sử dụng bất kỳ trình quản lý hình học nào bạn thích
You can expand the code block below to see a solution
Giải pháp. Tạo biểu mẫu nhập địa chỉHiển thị/Ẩn
Có nhiều cách khác nhau để giải bài tập này. Nếu giải pháp của bạn tạo ra một cửa sổ giống như cửa sổ trong câu lệnh bài tập, thì xin chúc mừng. Bạn đã giải thành công bài tập. Dưới đây, bạn có thể xem xét hai giải pháp sử dụng trình quản lý hình học
>>> greeting = tk.Label[text="Hello, Tkinter"]
98Một giải pháp tạo tiện ích con
>>> import tkinter as tk
05 và >>> import tkinter as tk
17 với cài đặt mong muốn cho từng trườngimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
6Không có gì sai với giải pháp này. Hơi dài nhưng mọi thứ đều rất rõ ràng. Nếu bạn muốn thay đổi điều gì đó, thì rõ ràng là bạn sẽ biết chính xác nơi cần thực hiện
Điều đó nói rằng, giải pháp có thể được rút ngắn đáng kể bằng cách nhận ra rằng mỗi
>>> import tkinter as tk
17 có cùng chiều rộng và tất cả những gì bạn cần cho mỗi >>> import tkinter as tk
05 là văn bảnimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
7Trong giải pháp này, a được sử dụng để lưu trữ các chuỗi cho mỗi nhãn ở dạng. Chúng được lưu trữ theo thứ tự mà mỗi trường biểu mẫu sẽ xuất hiện. Sau đó,
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
03 nhận cả chỉ mục và chuỗi từ mỗi giá trị trong danh sách import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
04When you’re ready, you can move on to the next section
Làm cho ứng dụng của bạn tương tác
Đến bây giờ, bạn đã biết khá rõ về cách tạo cửa sổ với Tkinter, thêm một số widget và kiểm soát bố cục ứng dụng. That’s great, but applications shouldn’t just look good—they actually need to do something. In this section, you’ll learn how to bring your applications to life by performing actions whenever certain events occur
Using Events and Event Handlers
When you create a Tkinter application, you must call
>>> import tkinter as tk
11 to start the event loop. During the event loop, your application checks if an event has occurred. If so, then it’ll execute some code in responseThe event loop is provided for you with Tkinter, so you don’t have to write any code that checks for events yourself. However, you do have to write the code that will be executed in response to an event. In Tkinter, you write functions called event handlers for the events that you use in your application
Note. An event is any action that occurs during the event loop that might trigger some behavior in the application, such as when a key or mouse button is pressed
When an event occurs, an event object is emitted, which means that an instance of a class representing the event is created. You don’t need to worry about instantiating these classes yourself. Tkinter will create instances of event classes for you automatically
You’ll write your own event loop in order to better understand how Tkinter’s event loop works. That way, you can see how Tkinter’s event loop fits into your application, and which parts you need to write yourself
Assume there’s a list called
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
06 that contains event objects. A new event object is automatically appended to import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
06 every time an event occurs in your program. You don’t need to implement this updating mechanism. It just automatically happens for you in this conceptual example. Using an infinite loop, you can continually check if there are any event objects in import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
06import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
8Right now, the event loop that you’ve created doesn’t do anything with
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
09. Let’s change that. Suppose your application needs to respond to keypresses. You need to check that import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
09 was generated by a user pressing a key on their keyboard, and if so, pass import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
09 to an event handler function for keypressesAssume that
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
09 has a import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
13 attribute set to the string import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
14 if the event is a keypress event object, and a import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
15 attribute containing the character of the key that was pressed. Create a new import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
16 function and update your event loop codeimport tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
9When you call
>>> import tkinter as tk
11, something like the above loop is run for you. This method takes care of two parts of the loop for you- It maintains a list of events that have occurred
- Nó chạy một trình xử lý sự kiện bất cứ khi nào một sự kiện mới được thêm vào danh sách đó
Update your event loop to use
>>> import tkinter as tk
11 instead of your own event loop>>> import tkinter as tk
>>> import tkinter.ttk as ttk
0import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
19 takes care of a lot for you, but there’s something missing from the above code. How does Tkinter know when to use import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
16? Tkinter widgets have a method called import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21 for just this purposeRemove adsUsing import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
To call an event handler whenever an event occurs on a widget, use
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21. The event handler is said to be bound to the event because it’s called every time the event occurs. You’ll continue with the keypress example from the previous section and use import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21 to bind import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
16 to the keypress event>>> import tkinter as tk
>>> import tkinter.ttk as ttk
1Here, the
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
16 event handler is bound to a import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
27 event using import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
28. Whenever a key is pressed while the application is running, your program will print the character of the key pressedNote. The output of the above program is not printed in the Tkinter application window. It’s printed to the
If you run the program in IDLE, then you’ll see the output in the interactive window. If you run the program from a terminal, then you should see the output in your terminal
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21 always takes at least two arguments- An event that’s represented by a string of the form
30, whereimport tkinter as tk window = tk.Tk[] label = tk.Label[text="Python rocks!"] label.pack[] window.mainloop[]
31 can be any of Tkinter’s eventsimport tkinter as tk window = tk.Tk[] label = tk.Label[text="Python rocks!"] label.pack[] window.mainloop[]
- An event handler that’s the name of the function to be called whenever the event occurs
The event handler is bound to the widget on which
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21 is called. When the event handler is called, the event object is passed to the event handler functionIn the example above, the event handler is bound to the window itself, but you can bind an event handler to any widget in your application. For example, you can bind an event handler to a
>>> import tkinter as tk
16 widget that will perform some action whenever the button is pressed>>> import tkinter as tk
>>> import tkinter.ttk as ttk
2In this example, the
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
34 event on the import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
35 widget is bound to the import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
36 event handler. The import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
34 event occurs whenever the left mouse button is pressed while the mouse is over the widget. There are other events for mouse button clicks, including import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
38 for the middle mouse button and import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
39 for the right mouse buttonNote. For a list of commonly used events, see the Event types section of the Tkinter 8. 5 reference
You can bind any event handler to any kind of widget with
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
21, but there’s a more straightforward way to bind event handlers to button clicks using the >>> import tkinter as tk
16 widget’s import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 attributeUsing import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
Every
>>> import tkinter as tk
16 widget has a import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 attribute that you can assign to a function. Whenever the button is pressed, the function is executedTake a look at an example. Trước tiên, bạn sẽ tạo một cửa sổ có tiện ích con
>>> import tkinter as tk
05 chứa giá trị số. You’ll put buttons on the left and right side of the label. The left button will be used to decrease the value in the >>> import tkinter as tk
05, and the right one will increase the value. Here’s the code for the window>>> import tkinter as tk
>>> import tkinter.ttk as ttk
3The window looks like this
With the app layout defined, you can bring it to life by giving the buttons some commands. Start with the left button. When this button is pressed, it should decrease the value in the label by one. In order to do this, you first need to get answers to two questions
- How do you get the text in
05?>>> import tkinter as tk
- How do you update the text in
05?>>> import tkinter as tk
Tiện ích
>>> import tkinter as tk
05 không có >>> import tkinter as tk
70 như tiện ích >>> import tkinter as tk
17 và >>> import tkinter as tk
18 có. Tuy nhiên, bạn có thể truy xuất văn bản từ nhãn bằng cách truy cập thuộc tính >>> import tkinter as tk
34 bằng ký hiệu chỉ số dưới kiểu từ điển>>> import tkinter as tk
>>> import tkinter.ttk as ttk
4Bây giờ bạn đã biết cách lấy và thiết lập văn bản của nhãn, hãy viết hàm
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
55 để tăng giá trị trong import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
56 lên một>>> import tkinter as tk
>>> import tkinter.ttk as ttk
5import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
55 lấy văn bản từ import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
56 và chuyển đổi nó thành số nguyên với import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
59. Sau đó, nó tăng giá trị này lên một và đặt thuộc tính >>> import tkinter as tk
34 của nhãn thành giá trị mới nàyBạn cũng sẽ cần
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
61 để giảm giá trị trong import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
62 xuống một>>> import tkinter as tk
>>> import tkinter.ttk as ttk
6Đặt
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
55 và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
61 vào mã của bạn ngay sau câu lệnh import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
65Để kết nối các nút với chức năng, hãy gán chức năng cho thuộc tính
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 của nút. Bạn có thể làm điều này khi khởi tạo các nút. Ví dụ: cập nhật hai dòng khởi tạo các nút như sau>>> import tkinter as tk
>>> import tkinter.ttk as ttk
7Đó là tất cả những gì bạn cần làm để liên kết các nút với
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
55 và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
61 và làm cho chương trình hoạt động. Hãy thử lưu các thay đổi của bạn và chạy ứng dụng. Nhấp vào các nút để tăng và giảm giá trị ở giữa cửa sổĐây là mã ứng dụng đầy đủ để bạn tham khảo
Mã nguồn đầy đủ của ứng dụng truy cậpHiển thị/Ẩn
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
8Ứng dụng này không đặc biệt hữu ích, nhưng những kỹ năng bạn học được ở đây áp dụng cho mọi ứng dụng bạn sẽ tạo
- Sử dụng widget để tạo các thành phần của giao diện người dùng
- Sử dụng trình quản lý hình học để kiểm soát bố cục của ứng dụng
- Viết trình xử lý sự kiện tương tác với các thành phần khác nhau để nắm bắt và chuyển đổi đầu vào của người dùng
Trong hai phần tiếp theo, bạn sẽ xây dựng các ứng dụng hữu ích hơn. Đầu tiên, bạn sẽ xây dựng bộ chuyển đổi nhiệt độ để chuyển đổi giá trị nhiệt độ từ độ F sang độ C. Sau đó, bạn sẽ xây dựng một trình soạn thảo văn bản có thể mở, chỉnh sửa và lưu tệp văn bản
Check Your Understanding
Mở rộng khối mã bên dưới cho một bài tập để kiểm tra sự hiểu biết của bạn
Tập thể dục. Mô phỏng tung một con súc sắc sáu mặtHiện/Ẩn
Viết chương trình mô phỏng tung một con súc sắc sáu mặt. Nên có một nút với dòng chữ
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
69. Khi người dùng nhấp vào nút, một số nguyên ngẫu nhiên từ >>> window = tk.Tk[]
39 đến import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
71 sẽ được hiển thịGợi ý. Bạn có thể tạo một số ngẫu nhiên bằng cách sử dụng
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
72 trong mô-đun. Nếu bạn không quen thuộc với mô-đun import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
73, hãy xem phần Tạo dữ liệu ngẫu nhiên bằng Python [Hướng dẫn] để biết thêm thông tinCửa sổ ứng dụng sẽ giống như thế này
Try this exercise now
You can expand the code block below to see a solution
Giải pháp. Mô phỏng tung một con súc sắc sáu mặtHiện/Ẩn
Here’s one possible solution
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
9Hãy nhớ rằng mã của bạn có thể trông khác
When you’re ready, you can move on to the next section
Xây dựng bộ chuyển đổi nhiệt độ [Ứng dụng ví dụ]
Trong phần này, bạn sẽ xây dựng một ứng dụng chuyển đổi nhiệt độ cho phép người dùng nhập nhiệt độ theo độ F và nhấn một nút để chuyển nhiệt độ đó sang độ C. Bạn sẽ xem qua mã từng bước. Bạn cũng có thể tìm thấy mã nguồn đầy đủ ở cuối phần này để tham khảo
Ghi chú. Để tận dụng tối đa phần này, hãy làm theo trình bao Python
Trước khi bạn bắt đầu viết mã, trước tiên bạn sẽ thiết kế ứng dụng. Bạn cần ba yếu tố
17. Một tiện ích có tên là>>> import tkinter as tk
76 để nhập giá trị độ Fimport tkinter as tk window = tk.Tk[] label = tk.Label[text="Python rocks!"] label.pack[] window.mainloop[]
05. Một tiện ích có tên>>> import tkinter as tk
78 để hiển thị kết quả độ Cimport tkinter as tk window = tk.Tk[] label = tk.Label[text="Python rocks!"] label.pack[] window.mainloop[]
16. Tiện ích có tên là>>> import tkinter as tk
80 đọc giá trị từ tiện íchimport tkinter as tk window = tk.Tk[] label = tk.Label[text="Python rocks!"] label.pack[] window.mainloop[]
17, chuyển đổi nó từ độ F sang độ C và đặt văn bản của tiện ích>>> import tkinter as tk
05 thành kết quả khi được nhấp>>> import tkinter as tk
Bạn có thể sắp xếp chúng trong một lưới với một hàng và một cột cho mỗi tiện ích. Điều đó mang lại cho bạn một ứng dụng hoạt động tối thiểu, nhưng nó không thân thiện với người dùng. Mọi thứ cần phải có nhãn
Bạn sẽ đặt nhãn trực tiếp ở bên phải của tiện ích con
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 có chứa ký hiệu độ F [℉] để người dùng biết rằng giá trị import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 phải ở độ F. Để thực hiện việc này, hãy đặt văn bản nhãn thành import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
85, sử dụng hỗ trợ ký tự Unicode có tên của Python để hiển thị ký hiệu FahrenheitBạn có thể thêm một chút tinh tế cho
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
80 bằng cách đặt văn bản của nó thành giá trị import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
87, hiển thị một mũi tên màu đen chỉ sang phải. Bạn cũng sẽ đảm bảo rằng import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
78 luôn có biểu tượng độ C [℃] sau văn bản nhãn import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
89 để cho biết rằng kết quả tính bằng độ C. Đây là cửa sổ cuối cùng sẽ trông như thế nàoBây giờ bạn đã biết mình cần những tiện ích nào và cửa sổ sẽ trông như thế nào, bạn có thể bắt đầu mã hóa nó. Đầu tiên, nhập
>>> import tkinter as tk
20 và tạo một cửa sổ mới>>> tk.Label[]
>>> ttk.Label[]
0import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
91 đặt tiêu đề của cửa sổ hiện có, trong khi import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
92 với cả hai đối số được đặt thành import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
93 làm cho cửa sổ có kích thước cố định. Cuối cùng khi bạn chạy ứng dụng này, cửa sổ sẽ có dòng chữ Bộ chuyển đổi nhiệt độ trên thanh tiêu đề của nó. Tiếp theo, tạo tiện ích import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 có nhãn tên là import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 và gán cả hai cho tiện ích >>> import tkinter as tk
19 có tên là import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
97>>> tk.Label[]
>>> ttk.Label[]
1Người dùng sẽ nhập giá trị Fahrenheit vào
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76, và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 được sử dụng để gắn nhãn import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 với ký hiệu Fahrenheit. Các nhóm container import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
97 import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 cùng nhauBạn muốn
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 được đặt ngay bên phải của import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76. Bạn có thể bố trí chúng trong import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
97 bằng cách sử dụng trình quản lý hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
98 với một hàng và hai cột>>> tk.Label[]
>>> ttk.Label[]
2Bạn đã đặt tham số
>>> window.mainloop[]
53 thành >>> window.mainloop[]
56 cho import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 để nó luôn dính vào cạnh ngoài cùng bên phải của ô lưới. Bạn cũng đặt >>> window.mainloop[]
53 thành >>> window.mainloop[]
60 cho import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 để giữ cho nó dính vào cạnh ngoài cùng bên trái của ô lưới. Điều này đảm bảo rằng import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
95 luôn nằm ngay bên phải của import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76Bây giờ, tạo
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
80 và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
78 để chuyển đổi nhiệt độ đã nhập thành import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76 và hiển thị kết quả>>> tk.Label[]
>>> ttk.Label[]
3Giống như
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
97, cả import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
80 và import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
78 đều được gán cho >>> import tkinter as tk
03. Cùng với nhau, ba vật dụng này tạo thành ba ô trong lưới ứng dụng chính. Sử dụng >>> greeting = tk.Label[text="Hello, Tkinter"]
98 để tiếp tục và bố trí chúng ngay bây giờ>>> tk.Label[]
>>> ttk.Label[]
4Cuối cùng, chạy ứng dụng
>>> tk.Label[]
>>> ttk.Label[]
5Rằng sẽ rất tốt. Nhưng nút chưa làm gì cả. Ở đầu tệp script của bạn, ngay bên dưới dòng
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
65, hãy thêm một hàm có tên là >>> import tkinter as tk
>>> import tkinter.ttk as ttk
25>>> tk.Label[]
>>> ttk.Label[]
6Hàm này đọc giá trị từ
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
76, chuyển đổi nó từ độ F sang độ C, sau đó hiển thị kết quả ở dạng import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
78Bây giờ đi xuống dòng nơi bạn xác định
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
80 và đặt tham số import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 của nó thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
30>>> tk.Label[]
>>> ttk.Label[]
7Đó là nó. Bạn đã tạo một ứng dụng chuyển đổi nhiệt độ đầy đủ chức năng chỉ trong 26 dòng mã. Khá mát mẻ, phải không?
Bạn có thể mở rộng khối mã bên dưới để xem toàn bộ tập lệnh
Mã nguồn đầy đủ của bộ chuyển đổi nhiệt độHiển thị/Ẩn
Đây là kịch bản đầy đủ để bạn tham khảo
>>> tk.Label[]
>>> ttk.Label[]
8Đã đến lúc đẩy mọi thứ lên một tầm cao mới. Đọc để tìm hiểu cách xây dựng trình soạn thảo văn bản
Xây dựng Trình soạn thảo văn bản [Ứng dụng mẫu]
Trong phần này, bạn sẽ xây dựng một ứng dụng soạn thảo văn bản có thể tạo, mở, chỉnh sửa và lưu tệp văn bản. Có ba yếu tố cần thiết trong ứng dụng
- Tiện ích
16 có tên là>>> import tkinter as tk
32 để mở tệp để chỉnh sửa>>> import tkinter as tk >>> import tkinter.ttk as ttk
- Tiện ích
16 có tên là>>> import tkinter as tk
34 để lưu tệp>>> import tkinter as tk >>> import tkinter.ttk as ttk
- Tiện ích
35 có tên là>>> import tkinter as tk >>> import tkinter.ttk as ttk
36 để tạo và chỉnh sửa tệp văn bản>>> import tkinter as tk >>> import tkinter.ttk as ttk
Ba tiện ích sẽ được sắp xếp sao cho hai nút nằm ở phía bên trái của cửa sổ và hộp văn bản ở phía bên tay phải. Toàn bộ cửa sổ phải có chiều cao tối thiểu là 800 pixel và
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 phải có chiều rộng tối thiểu là 800 pixel. Toàn bộ bố cục phải đáp ứng để nếu cửa sổ được thay đổi kích thước, thì >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 cũng được thay đổi kích thước. Tuy nhiên, chiều rộng của khung chứa các nút không được thay đổiĐây là một bản phác thảo về giao diện của cửa sổ
Bạn có thể đạt được bố cục mong muốn bằng cách sử dụng trình quản lý hình học
>>> greeting = tk.Label[text="Hello, Tkinter"]
98. Bố cục chứa một hàng và hai cột- Một cột hẹp bên trái dành cho các nút
- Một cột rộng hơn ở bên phải cho hộp văn bản
Để đặt kích thước tối thiểu cho cửa sổ và
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
36, bạn có thể đặt tham số >>> window.mainloop[]
32 của cửa sổ theo phương pháp >>> window.mainloop[]
24 và >>> window.mainloop[]
23 thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
44. Để xử lý thay đổi kích thước, bạn có thể đặt tham số >>> window.mainloop[]
31 của các phương thức này thành >>> window = tk.Tk[]
39Để đưa cả hai nút vào cùng một cột, bạn cần tạo một tiện ích con
>>> import tkinter as tk
19 có tên là >>> import tkinter as tk
>>> import tkinter.ttk as ttk
48. Theo bản phác thảo, hai nút phải được xếp chồng lên nhau theo chiều dọc bên trong khung này, với >>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 ở trên cùng. Bạn có thể làm điều đó với trình quản lý hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
98 hoặc >>> import tkinter as tk
10. Hiện tại, bạn sẽ gắn bó với >>> greeting = tk.Label[text="Hello, Tkinter"]
98 vì làm việc với nó dễ dàng hơn một chútBây giờ bạn đã có kế hoạch, bạn có thể bắt đầu mã hóa ứng dụng. Bước đầu tiên là tạo tất cả các vật dụng bạn cần
>>> tk.Label[]
>>> ttk.Label[]
9Đây là một sự cố của mã này
- Dòng 1 nhập khẩu
20>>> import tkinter as tk
- Dòng 3 và 4 tạo một cửa sổ mới với tiêu đề
54>>> import tkinter as tk >>> import tkinter.ttk as ttk
- Dòng 6 và 7 đặt cấu hình hàng và cột
- Các dòng 9 đến 12 tạo bốn tiện ích mà bạn sẽ cần cho hộp văn bản, khung và các nút mở và lưu
Hãy nhìn vào dòng 6 kỹ hơn. Tham số
>>> window.mainloop[]
32 của >>> window.mainloop[]
24 được đặt thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
44 và >>> window.mainloop[]
31 được đặt thành >>> window = tk.Tk[]
39>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
0Đối số đầu tiên là
>>> import tkinter as tk
52, đặt chiều cao của hàng đầu tiên thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
44 pixel và đảm bảo rằng chiều cao của hàng tăng tỷ lệ thuận với chiều cao của cửa sổ. Chỉ có một hàng trong bố cục ứng dụng, vì vậy các cài đặt này áp dụng cho toàn bộ cửa sổHãy cũng xem xét kỹ hơn dòng 7. Ở đây, bạn sử dụng
>>> window.mainloop[]
23 để đặt thuộc tính >>> import tkinter as tk
49 và >>> window.mainloop[]
31 của cột có chỉ số >>> window = tk.Tk[]
39 thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
44 và >>> window = tk.Tk[]
39 tương ứng>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
1Hãy nhớ rằng, chỉ số hàng và cột dựa trên số không, vì vậy các cài đặt này chỉ áp dụng cho cột thứ hai. Bằng cách chỉ định cấu hình cột thứ hai, hộp văn bản sẽ mở rộng và co lại một cách tự nhiên khi cửa sổ được thay đổi kích thước, trong khi cột chứa các nút sẽ giữ nguyên chiều rộng cố định
Bây giờ bạn có thể làm việc trên bố cục ứng dụng. Đầu tiên, gán hai nút cho khung
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 bằng trình quản lý hình học >>> greeting = tk.Label[text="Hello, Tkinter"]
98>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
2Hai dòng mã này tạo một lưới có hai hàng và một cột trong khung
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 vì cả >>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 và >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 đều có thuộc tính >>> greeting = tk.Label[text="Hello, Tkinter"]
04 được đặt thành >>> import tkinter as tk
>>> import tkinter.ttk as ttk
48. >>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 được đặt ở hàng đầu tiên và >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 ở hàng thứ hai sao cho >>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 xuất hiện phía trên >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 trong bố cục, chỉ là bạn đã lên kế hoạch trong bản phác thảo của mìnhCả
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 và >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 đều có thuộc tính >>> window.mainloop[]
53 được đặt thành >>> window.mainloop[]
76, điều này buộc các nút mở rộng theo chiều ngang theo cả hai hướng và lấp đầy toàn bộ khung. Điều này đảm bảo rằng cả hai nút đều có cùng kích thướcBạn đặt năm pixel đệm xung quanh mỗi nút bằng cách đặt tham số
>>> window.mainloop[]
12 và >>> window.mainloop[]
13 thành >>> import tkinter as tk
61. Chỉ >>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 có đệm dọc. Vì nó ở trên cùng, nên phần đệm dọc sẽ dịch chuyển nút xuống từ trên cùng của cửa sổ một chút và đảm bảo rằng có một khoảng cách nhỏ giữa nó và >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34Bây giờ,
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 đã được bố trí và sẵn sàng hoạt động, bạn có thể thiết lập bố cục lưới cho phần còn lại của cửa sổ>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
3Hai dòng mã này tạo lưới có một hàng và hai cột cho
>>> import tkinter as tk
03. Bạn đặt >>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 vào cột đầu tiên và >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 vào cột thứ hai để >>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 xuất hiện ở bên trái của >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 trong bố cục cửa sổTham số
>>> window.mainloop[]
53 cho >>> import tkinter as tk
>>> import tkinter.ttk as ttk
48 được đặt thành >>> window.mainloop[]
75, buộc toàn bộ khung mở rộng theo chiều dọc và lấp đầy toàn bộ chiều cao của cột của nó. >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 lấp đầy toàn bộ ô lưới của nó vì bạn đặt tham số >>> window.mainloop[]
53 của nó thành >>> window.mainloop[]
78, điều này buộc nó phải mở rộng theo mọi hướngBây giờ bố cục ứng dụng đã hoàn tất, hãy thêm
>>> import tkinter as tk
11 vào cuối chương trình, lưu và chạy tệp>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
4Cửa sổ sau được hiển thị
Rằng sẽ rất tốt. Nhưng nó chưa làm gì cả, vì vậy bạn cần bắt đầu viết lệnh cho các nút.
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 cần hiển thị hộp thoại mở tệp và cho phép người dùng chọn tệp. Sau đó, nó cần mở tệp đó và đặt văn bản của >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 vào nội dung của tệp. Đây là một hàm >>> tk.Label[]
>>> ttk.Label[]
03 thực hiện điều này>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
5Đây là một sự cố của chức năng này
- Các dòng 5 đến 7 sử dụng hộp thoại
04 từ mô-đun>>> tk.Label[] >>> ttk.Label[]
05 để hiển thị hộp thoại mở tệp và lưu trữ đường dẫn tệp đã chọn tới>>> tk.Label[] >>> ttk.Label[]
06>>> tk.Label[] >>> ttk.Label[]
- Dòng 8 và 9 kiểm tra xem người dùng có đóng hộp thoại hay nhấp vào nút Hủy không. Nếu vậy, thì
06 sẽ là>>> tk.Label[] >>> ttk.Label[]
08 và hàm sẽ>>> tk.Label[] >>> ttk.Label[]
09 mà không cần thực thi bất kỳ mã nào để đọc tệp và đặt văn bản của>>> tk.Label[] >>> ttk.Label[]
36>>> import tkinter as tk >>> import tkinter.ttk as ttk
- Dòng 10 xóa nội dung hiện tại của
36 bằng cách sử dụng>>> import tkinter as tk >>> import tkinter.ttk as ttk
71>>> import tkinter as tk
- Dòng 11 và 12 mở tệp đã chọn và
13 nội dung của nó trước khi lưu trữ>>> tk.Label[] >>> ttk.Label[]
34 dưới dạng chuỗi>>> import tkinter as tk
- Dòng 13 gán chuỗi
34 cho>>> import tkinter as tk
36 bằng cách sử dụng>>> import tkinter as tk >>> import tkinter.ttk as ttk
72>>> import tkinter as tk
- Dòng 14 đặt tiêu đề của cửa sổ để nó chứa đường dẫn của tệp đang mở
Bây giờ bạn có thể cập nhật chương trình để
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 gọi >>> tk.Label[]
>>> ttk.Label[]
03 bất cứ khi nào nó được nhấp vào. Có một số điều bạn cần làm để cập nhật chương trình. Đầu tiên, nhập >>> tk.Label[]
>>> ttk.Label[]
04 từ >>> tk.Label[]
>>> ttk.Label[]
05 bằng cách thêm phần nhập sau vào đầu chương trình của bạn>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
6Tiếp theo, đặt thuộc tính
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 của >>> tk.Label[]
>>> ttk.Label[]
23 thành >>> tk.Label[]
>>> ttk.Label[]
24>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
7Lưu tệp và chạy nó để kiểm tra xem mọi thứ có hoạt động không. Sau đó thử mở một tệp văn bản
Khi
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
32 đang hoạt động, đã đến lúc xử lý hàm cho >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34. Thao tác này cần mở hộp thoại lưu tệp để người dùng có thể chọn nơi họ muốn lưu tệp. Bạn sẽ sử dụng hộp thoại >>> tk.Label[]
>>> ttk.Label[]
27 trong mô-đun >>> tk.Label[]
>>> ttk.Label[]
05 cho việc này. Hàm này cũng cần trích xuất văn bản hiện có trong >>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 và ghi nội dung này vào một tệp tại vị trí đã chọn. Đây là một chức năng chỉ làm điều này>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
8Đây là cách mã này hoạt động
- Dòng 19 đến 22 sử dụng hộp thoại
27 để lấy vị trí lưu mong muốn từ người dùng. Đường dẫn tệp đã chọn được lưu trữ trong biến>>> tk.Label[] >>> ttk.Label[]
06>>> tk.Label[] >>> ttk.Label[]
- Dòng 23 và 24 kiểm tra xem người dùng có đóng hộp thoại hay bấm vào nút Hủy không. Nếu vậy, thì
06 sẽ là>>> tk.Label[] >>> ttk.Label[]
08 và hàm sẽ trả về mà không thực thi bất kỳ mã nào để lưu văn bản vào tệp>>> tk.Label[] >>> ttk.Label[]
- Dòng 25 tạo một tệp mới tại đường dẫn tệp đã chọn
- Dòng 26 trích xuất văn bản từ
36 bằng phương pháp>>> import tkinter as tk >>> import tkinter.ttk as ttk
70 và gán nó cho biến>>> import tkinter as tk
34>>> import tkinter as tk
- Dòng 27 ghi
34 vào tệp đầu ra>>> import tkinter as tk
- Dòng 28 cập nhật tiêu đề của cửa sổ để đường dẫn tệp mới được hiển thị trong tiêu đề cửa sổ
Bây giờ bạn có thể cập nhật chương trình để
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 gọi >>> tk.Label[]
>>> ttk.Label[]
39 khi nó được nhấp vào. Một lần nữa, có một vài điều bạn cần làm để cập nhật chương trình. Đầu tiên, nhập >>> tk.Label[]
>>> ttk.Label[]
27 từ >>> tk.Label[]
>>> ttk.Label[]
05 bằng cách cập nhật phần nhập ở đầu tập lệnh của bạn, như vậy>>> from tkinter import *
>>> from tkinter.ttk import *
>>> Label[]
>>> Text[]
9Cuối cùng, đặt thuộc tính
import tkinter as tk
window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]
window.mainloop[]
42 của >>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 thành >>> tk.Label[]
>>> ttk.Label[]
44>>> import tkinter as tk
00Lưu tệp và chạy nó. Bây giờ bạn đã có một trình soạn thảo văn bản tối thiểu nhưng đầy đủ chức năng
Bạn có thể mở rộng khối mã bên dưới để xem toàn bộ tập lệnh
Mã nguồn đầy đủ của ứng dụng soạn thảo văn bảnHiển thị/Ẩn
Đây là kịch bản đầy đủ để bạn tham khảo
>>> import tkinter as tk
01Bây giờ bạn đã xây dựng hai ứng dụng GUI bằng Python và áp dụng nhiều kỹ năng mà bạn đã học được trong hướng dẫn này. Đó không phải là thành tựu nhỏ, vì vậy hãy dành thời gian để cảm thấy hài lòng về những gì bạn đã làm. Bây giờ bạn đã sẵn sàng để tự xử lý một số ứng dụng
Phần kết luận
Trong hướng dẫn này, bạn đã học cách bắt đầu với lập trình Python GUI. Tkinter là một lựa chọn hấp dẫn cho khung GUI Python vì nó được tích hợp trong thư viện chuẩn Python và việc tạo các ứng dụng với khung này tương đối dễ dàng
Xuyên suốt hướng dẫn này, bạn đã học được một số khái niệm quan trọng về Tkinter
- Cách làm việc với widget
- Cách kiểm soát bố cục ứng dụng của bạn bằng trình quản lý hình học
- Cách làm cho ứng dụng của bạn tương tác
- Cách sử dụng 5 widget cơ bản của Tkinter.
05,>>> import tkinter as tk
16,>>> import tkinter as tk
17,>>> import tkinter as tk
18, và>>> import tkinter as tk
19>>> import tkinter as tk
Bây giờ bạn đã thành thạo nền tảng lập trình Python GUI với Tkinter, bước tiếp theo là xây dựng một số ứng dụng của riêng bạn. Bạn sẽ tạo ra cái gì?
Tài nguyên bổ sung
Trong hướng dẫn này, bạn chỉ chạm vào nền tảng của việc tạo các ứng dụng GUI Python bằng Tkinter. Có một số chủ đề bổ sung không được đề cập ở đây. Trong phần này, bạn sẽ tìm thấy một số tài nguyên tốt nhất hiện có để giúp bạn tiếp tục cuộc hành trình của mình
Tài liệu tham khảo Tkinter
Dưới đây là một số tài nguyên chính thức để kiểm tra
- Tài liệu tham khảo Python Tkinter chính thức bao gồm mô-đun Tkinter của Python ở độ sâu vừa phải. Nó được viết cho các nhà phát triển Python nâng cao hơn và không phải là tài nguyên tốt nhất cho người mới bắt đầu
- Tkinter 8. 5 tài liệu tham khảo. GUI cho Python là một tài liệu tham khảo mở rộng bao gồm phần lớn mô-đun Tkinter. Nó đầy đủ, nhưng nó được viết theo phong cách tham khảo mà không có bình luận hoặc ví dụ
- Tài liệu tham khảo Lệnh Tk là hướng dẫn dứt khoát cho các lệnh trong thư viện Tk. Nó được viết cho ngôn ngữ Tcl, nhưng nó trả lời rất nhiều câu hỏi về lý do tại sao mọi thứ hoạt động theo cách chúng hoạt động trong Tkinter
Tiện ích bổ sung
Trong hướng dẫn này, bạn đã tìm hiểu về các widget
>>> import tkinter as tk
05, >>> import tkinter as tk
16, >>> import tkinter as tk
17, >>> import tkinter as tk
18 và >>> import tkinter as tk
19. Có một số tiện ích khác trong Tkinter, tất cả đều cần thiết để xây dựng các ứng dụng trong thế giới thực. Dưới đây là một số tài nguyên để tiếp tục tìm hiểu về widget- Hướng dẫn TkDocs Tkinter là một hướng dẫn khá toàn diện cho Tk, thư viện mã cơ bản được Tkinter sử dụng. Các ví dụ được trình bày bằng Python, Ruby, Perl và Tcl. Bạn có thể tìm thấy một số ví dụ về các vật dụng ngoài những vật dụng được đề cập ở đây trong hai phần
- Tiện ích cơ bản bao gồm các tiện ích giống như hướng dẫn này, cùng với một số tiện ích khác
- Nhiều tiện ích hơn bao gồm một số tiện ích bổ sung
- Các tài liệu Python chính thức bao gồm các vật dụng bổ sung
- tiện ích theo chủ đề ttk bao gồm bộ tiện ích theo chủ đề Tk
- Tiện ích văn bản cuộn mô tả chi tiết tiện ích
18 kết hợp với thanh cuộn dọc>>> import tkinter as tk
Phân phối ứng dụng
Khi bạn đã tạo một ứng dụng với Tkinter, bạn có thể muốn phân phối ứng dụng đó cho đồng nghiệp và bạn bè của mình. Dưới đây là một số hướng dẫn để giúp bạn thực hiện quy trình đó
- Sử dụng PyInstaller để dễ dàng phân phối các ứng dụng Python
- 4 nỗ lực đóng gói Python dưới dạng tệp thực thi
- Xây dựng các ứng dụng Python độc lập với PyOxidizer
Các khung GUI khác
Tkinter không phải là lựa chọn duy nhất của bạn cho khung GUI Python. Nếu Tkinter không đáp ứng nhu cầu của dự án của bạn, thì đây là một số khuôn khổ khác để xem xét
- Cách xây dựng ứng dụng GUI Python với wxPython
- Python và PyQt. Xây dựng Máy tính để bàn GUI
- Xây dựng ứng dụng di động với Kivy Python Framework
- PySimpleGUI. Cách đơn giản để tạo GUI bằng Python
Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Lập trình GUI Python với Tkinter” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian
Lấy bài kiểm tra "
Đánh dấu là đã hoàn thành
🐍 Thủ thuật Python 💌
Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python
Gửi cho tôi thủ thuật Python »
Giới thiệu về David Amos
David là một nhà văn, lập trình viên và nhà toán học đam mê khám phá toán học thông qua mã
» Thông tin thêm về DavidMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là
Aldren
Bartosz
Geir Arne
Jaya
Joanna
kate
Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bạn nghĩ sao?
Đánh giá bài viết này
Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?
Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi