Get() trong tkinter Python là gì?

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 has several strengths. It’s cross-platform, so the same code works on Windows, macOS, and Linux. Visual elements are rendered using native operating system elements, so applications built with Tkinter look like they belong on the platform where they’re run

Although Tkinter is considered the de facto Python GUI framework, it’s not without criticism. One notable criticism is that GUIs built with Tkinter look outdated. If you want a shiny, modern interface, then Tkinter may not be what you’re looking for

However, Tkinter is lightweight and relatively painless to use compared to other frameworks. This makes it a compelling choice for building GUI applications in Python, especially for applications where a modern sheen is unnecessary, and the top priority is to quickly build something that’s functional and cross-platform

In this tutorial, you’ll learn how to

  • Get started with Tkinter with a Hello, World application
  • Work with widgets, such as buttons and text boxes
  • Control your application layout with geometry managers
  • Make your applications interactive by associating button clicks with Python functions

Note. This tutorial is adapted from the chapter “Graphical User Interfaces” of Python Basics. A Practical Introduction to Python 3

The book uses Python’s built-in IDLE editor to create and edit Python files and interact with the Python shell. In this tutorial, references to IDLE have been removed in favor of more general language

The bulk of the material in this tutorial has been left unchanged, and you should have no problems running the example code from the editor and environment of your choice

Once you’ve mastered these skills by working through the exercises at the end of each section, you’ll tie everything together by building two applications. The first is a temperature converter, and the second is a text editor. It’s time to dive right in and learn how to build an application with Tkinter

Free Bonus. 5 Thoughts On Python Mastery, a free course for Python developers that shows you the roadmap and the mindset you’ll need to take your Python skills to the next level

Take the Quiz. Test your knowledge with our interactive “Python GUI Programming With Tkinter” quiz. Upon completion you will receive a score so you can track your learning progress over time

Take the Quiz »

Building Your First Python GUI Application With Tkinter

The foundational element of a Tkinter GUI is the window. Windows are the containers in which all other GUI elements live. These other GUI elements, such as text boxes, labels, and buttons, are known as widgets. Widgets are contained inside of windows

First, create a window that contains a single widget. Bắt đầu một phiên mới và làm theo

Ghi chú. The code examples in this tutorial have all been tested on Windows, macOS, and Ubuntu Linux 20. 04 with Python version 3. 10

If you’ve installed Python with the official installers available for Windows and macOS from 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 on macOS with Homebrew

The Python distribution for macOS available on Homebrew doesn’t come bundled with the Tcl/Tk dependency required by Tkinter. The default system version is used instead. This version may be outdated and prevent you from importing the Tkinter module. To avoid this problem, use the official macOS installer

Ubuntu Linux 20. 04

To conserve memory space, the default version of the Python interpreter that comes pre-installed on 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 ads

Adding 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 shell

Warning. 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 change

Creating 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
14

The 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[]

Hã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

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. Here are some of the widgets available

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 widgets

You’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

  1. Classic widgets. Available in the
    >>> import tkinter as tk
    
    20 package, for example
    >>> import tkinter as tk
    
    21
  2. Themed widgets. Available in the
    >>> import tkinter as tk
    
    22 submodule, for example
    >>> import tkinter as tk
    
    23

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

Most of the themed widgets are near drop-in replacements for their legacy counterparts, but with a more modern look. You can also use a few brand-new widgets, such as the , which weren’t available in Tkinter before. At the same time, you’ll need to continue using some of the classic widgets that don’t have a themed alternative

Note. Themed widgets in the

>>> import tkinter as tk
24 module use the operating system’s native look and feel by default. However, you can change their theme for a customized visual appearance, such as light and dark modes. A theme is a collection of reusable style definitions, which you can think of as a Cascading Style Sheet [CSS] for Tkinter

Making the new widgets themable meant extracting most of their style information into separate objects. On the one hand, such a separation of concerns is a desired property in the library’s design, but on the other hand, it introduces an additional abstraction layer, which makes themed widgets more difficult to style than the classic ones

When working with regular and themed widgets in Tkinter, it’s customary to declare the following aliases for the Tkinter packages and modules

>>>

>>> import tkinter as tk
>>> import tkinter.ttk as ttk

Aliases like this let you explicitly refer to either

>>> import tkinter as tk
04 or
>>> import tkinter as tk
26, for example, in one program depending on your needs

>>>

>>> tk.Label[]


>>> ttk.Label[]

However, you may sometimes find it more convenient to use a wildcard import [

>>> import tkinter as tk
27] to automatically override all legacy widgets with the themed ones where possible, like so

>>>

>>> from tkinter import *
>>> from tkinter.ttk import *

>>> Label[]


>>> Text[]

Now, you don’t have to prefix the widget’s class name with its corresponding Python module. You’ll always create a themed widget as long as it’s available, or you’ll fall back to the classic widget otherwise. The two import statements above must be placed in the specified order to have an effect. Because of that, wildcard imports are considered a bad practice, which should generally be avoided unless used consciously

For a full list of Tkinter widgets, check out Basic Widgets and More Widgets in the TkDocs tutorial. 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
05

Remove ads

Hiển thị văn bản và hình ảnh với
>>> import tkinter as tk
05 Widget

>>> 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ình

Bạ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
1

Có rất nhiều tên màu hợp lệ, bao gồm

  • >>> import tkinter as tk
    
    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

Many of the HTML color names work with Tkinter. For a full reference, including macOS- and Windows-specific system colors that the current system theme controls, check out the colors manual page

You can also specify a color using

>>> import tkinter as tk
2

This sets the label background to a nice, light blue color. Hexadecimal RGB values are more cryptic than named colors, but they’re also more flexible. Fortunately, there are tools available that make getting hexadecimal color codes relatively painless

If you don’t feel like typing out

>>> import tkinter as tk
37 and
>>> import tkinter as tk
38 all the time, then you can use the shorthand
>>> import tkinter as tk
47 and
>>> import tkinter as tk
48 parameters to set the foreground and background colors

>>> import tkinter as tk
3

You can also control the width and height of a label with the

>>> import tkinter as tk
49 and
>>> import tkinter as tk
50 parameters

>>> 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
52

Ghi 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 ads

Hiển thị các nút có thể nhấp với
>>> import tkinter as tk
16 Widget

>>> 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út

Có 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

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
6

Tuy 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

  1. Truy xuất văn bản bằng
    >>> import tkinter as tk
    
    70
  2. Xóa văn bản bằng
    >>> import tkinter as tk
    
    71
  3. Chèn văn bản với
    >>> import tkinter as tk
    
    72

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
7

Bâ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 sau

Nhấp vào bên trong tiện ích

>>> import tkinter as tk
17 bằng chuột và nhập
>>> import tkinter as tk
84

Bâ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[]
0

Bạ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[]
1

Văn bản còn lại trong widget bây giờ là

>>> import tkinter as tk
91

Lư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
52

Nế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[]
2

Vă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[]
3

Bâ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[]
4

The 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[]
5

Vă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ện

Remove ads

Nhận đầu vào của người dùng nhiều dòng với
>>> import tkinter as tk
18 Widget

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

  1. Truy xuất văn bản với
    >>> import tkinter as tk
    
    70
  2. Xóa văn bản với
    >>> import tkinter as tk
    
    71
  3. Chèn văn bản với
    >>> import tkinter as tk
    
    72

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[]
6

Bạn cũng có thể đóng thủ công bằng cách nhấp vào nút Đóng

In your Python shell, create a new blank window and pack a

>>> window = tk.Tk[]
25 widget into it

>>>

>>> window = tk.Tk[]
7

Theo 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ào

Nhấ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. Nó đưa ra một ngoại lệ

>>>

>>> 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

  1. Số dòng của một ký tự
  2. 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. Để tạo chỉ mục, bạn tạo một chuỗi có dạng
>>> window = tk.Tk[]
41, thay thế
>>> window = tk.Tk[]
42 bằng số dòng và
>>> window = tk.Tk[]
43 bằng số ký tự. 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ứ hai

Sử 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[]
9

Có 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ỉ mục kết thúc phải nhiều hơn chỉ mục của ký tự cuối cùng được đọc một đơn vị

Vì 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"]
2

Lư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. Có hai cách để sử dụng
>>> import tkinter as tk
71

  1. Với một đối số duy nhất
  2. 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[]
68

Vớ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"]
4

Lư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ứ hai

Mặ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ản

Cố 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"]
7

Hộp văn bản hiện trống

You can insert text into a text box using

>>> import tkinter as tk
72

>>>

>>> greeting = tk.Label[text="Hello, Tkinter"]
8

Thao 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èn

Hã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"]
9

Thay 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[]
0

Bâ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

  1. 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í đó
  2. 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[]
2

Cá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ần

Remove ads

Gán Widget cho khung với
>>> import tkinter as tk
19 Widget

Trong hướng dẫn này, bạn sẽ chỉ làm việc với năm vật dụng

  1. >>> import tkinter as tk
    
    05
  2. >>> import tkinter as tk
    
    16
  3. >>> import tkinter as tk
    
    17
  4. >>> import tkinter as tk
    
    18
  5. >>> import tkinter as tk
    
    19

Đâ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ụng

Trướ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ắm

Mộ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[]
5

Lư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"]
07

Bâ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"]
07

Tấ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 nhau

Ghi 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ất

Ngoài việc nhóm các tiện ích của bạn một cách hợp lý, các tiện ích

>>> import tkinter as tk
19 có thể thêm một chút điểm nhấn vào phần trình bày trực quan cho ứng dụng của bạn. Đọc tiếp để biết cách tạo các đường viền khác nhau cho các vật dụng
>>> import tkinter as tk
19

Remove ads

Điều chỉnh giao diện khung hình với hình phù điêu

Có thể định cấu hình các tiện ích

>>> import tkinter as tk
19 với thuộc tính
>>> greeting = tk.Label[text="Hello, Tkinter"]
33 tạo đường viền xung quanh khung. You can set
>>> greeting = tk.Label[text="Hello, Tkinter"]
33 to be any of the following values

  • >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    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

Để á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. Thuộc tính này điều chỉnh độ rộng của đường viền theo pixel. 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

    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    44

  • Dòng 13 bắt đầu một vòng lặp

    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    45 để lặp qua từng mục trong từ điển
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    44

  • Dòng 14 tạo một tiện ích

    >>> import tkinter as tk
    
    19 mới và gán nó cho đối tượng
    >>> import tkinter as tk
    
    03. Thuộc tính
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    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
    >>> import tkinter as tk
    
    61 để có thể nhìn thấy hiệu ứng

  • Dòng 15 gói

    >>> import tkinter as tk
    
    19 vào cửa sổ bằng cách sử dụng
    >>> import tkinter as tk
    
    10. Đối số từ khóa
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    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

  • Dòng 16 và 17 tạo tiện ích

    >>> import tkinter as tk
    
    05 để hiển thị tên của bức phù điêu và đóng gói nó vào đối tượng
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    56 mà bạn vừa tạo

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

  • >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    35 tạo khung có vẻ phẳng
  • >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    36 thêm một đường viền làm cho khung có vẻ như bị chìm vào trong cửa sổ
  • >>> 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

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"]
67

Ghi 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. However, using the full name of the widget class can lead to long variable names, so you may want to adopt a shorthand for referring to each widget type. Đố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"]
83

In this section, you learned how to create a window, use widgets, and work with frames. 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. In the next section, you’ll learn how to control the layout of your applications using Tkinter’s powerful geometry managers

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

Exercise. Tạo tiện ích Mục nhập và chèn một số văn bảnHiển thị/Ẩn

Write a complete script that displays an

>>> import tkinter as tk
17 widget that’s 40 text units wide and has a white background and black text. 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"]
86

The output window should look like this

Try this exercise now

You can expand the code block below to see a solution

Giải pháp. Create an Entry widget and insert some textShow/Hide

Có một số cách để giải bài tập này. Đâ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[]
9

Giả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
17

On most systems, the default background color for an

>>> import tkinter as tk
17 widget is white, and the default foreground color is black. Vì vậy, bạn có thể tạo cùng một cửa sổ với các tham số
>>> import tkinter as tk
48 và
>>> import tkinter as tk
47 bị bỏ qua

>>> window.mainloop[]
0

Hã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

Remove ads

Kiể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ứ. Application layout in Tkinter is controlled with geometry managers. While
>>> import tkinter as tk
10 is an example of a geometry manager, it isn’t the only one. Tkinter has two others

  • >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    97
  • >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    98

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
10

The
>>> import tkinter as tk
10 Geometry Manager

The

>>> import tkinter as tk
10 geometry manager uses a packing algorithm to place widgets in a
>>> import tkinter as tk
19 or window in a specified order. Đối với một widget nhất định, thuật toán đóng gói có hai bước chính

  1. 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
  2. Center the widget in the parcel unless a different location is specified

>>> import tkinter as tk
10 rất mạnh, nhưng có thể khó hình dung. Cách tốt nhất để cảm nhận về
>>> import tkinter as tk
10 là xem xét một số ví dụ. See what happens when you
>>> import tkinter as tk
10 three
>>> import tkinter as tk
05 widgets into a
>>> import tkinter as tk
19

>>> window.mainloop[]
1

Theo 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. Therefore, the red
>>> import tkinter as tk
19 is placed at the top of the window. Then the yellow
>>> import tkinter as tk
19 is placed just below the red one and the blue
>>> import tkinter as tk
19 just below the yellow one

Có 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. Each parcel is as wide as the window and as tall as the
>>> import tkinter as tk
19 that it contains. Because no anchor point was specified when
>>> import tkinter as tk
10 was called for each
>>> greeting.pack[]
18 they’re all centered inside of their parcels. That’s why each
>>> import tkinter as tk
19 is centered in the window

>>> 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. For example, you can set the
>>> greeting.pack[]
21 keyword argument to specify in which direction the frames should fill. 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[]
2

Notice that the

>>> import tkinter as tk
49 is not set on any of the
>>> import tkinter as tk
19 widgets.
>>> import tkinter as tk
49 is no longer necessary because each frame sets
>>> import tkinter as tk
10 to fill horizontally, overriding any width you may set

The window produced by this script looks like this

One of the nice things about filling the window with

>>> import tkinter as tk
10 is that the fill is responsive to window resizing. 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 window

Notice, though, that the

>>> import tkinter as tk
19 widgets don’t expand in the vertical direction

The

>>> 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

  • >>> greeting.pack[]
    
    34
  • >>> greeting.pack[]
    
    35
  • >>> greeting.pack[]
    
    36
  • >>> greeting.pack[]
    
    37

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[]
3

This 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 height

The resulting window looks like this

Just like when you set

>>> greeting.pack[]
42 to make the frames responsive when you resized the window horizontally, you can set
>>> greeting.pack[]
43 to make the frames responsive when you resize the window vertically

To make the layout truly responsive, you can set an initial size for your frames using the

>>> import tkinter as tk
49 and
>>> import tkinter as tk
50 attributes. Then, set the
>>> greeting.pack[]
21 keyword argument of
>>> import tkinter as tk
10 to
>>> greeting.pack[]
24 and set the
>>> greeting.pack[]
49 keyword argument to
>>> greeting.pack[]
50

>>> window.mainloop[]
4

When you run the above script, you’ll see a window that initially looks the same as the one you generated in the previous example. The difference is that now you can resize the window however you want, and the frames will expand and fill the window responsively

Pretty cool

Remove ads

The
>>> greeting = tk.Label[text="Hello, Tkinter"]
97 Geometry Manager

You can use

>>> greeting = tk.Label[text="Hello, Tkinter"]
97 to control the precise location that a widget should occupy in a window or
>>> 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. Both
>>> greeting.pack[]
54 and
>>> greeting.pack[]
55 are measured in pixels, not text units

Keep in mind that the origin, where

>>> greeting.pack[]
54 and
>>> greeting.pack[]
55 are both
>>> import tkinter as tk
52, is the top-left corner of the
>>> import tkinter as tk
19 or window. 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

Here’s an example of how the

>>> greeting = tk.Label[text="Hello, Tkinter"]
97 geometry manager works

>>> window.mainloop[]
5

Here’s how this code works

  • Lines 5 and 6 create a new
    >>> import tkinter as tk
    
    19 widget called
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    56, measuring
    >>> greeting.pack[]
    
    68 pixels wide and
    >>> greeting.pack[]
    
    68 pixels tall, and pack it into the window with
    >>> import tkinter as tk
    
    10
  • Lines 8 and 9 create a new
    >>> import tkinter as tk
    
    05 called
    >>> greeting.pack[]
    
    72 with a red background and place it in
    >>> greeting.pack[]
    
    73 at position [0, 0]
  • Lines 11 and 12 create a second
    >>> import tkinter as tk
    
    05 called
    >>> greeting.pack[]
    
    75 with a yellow background and place it in
    >>> greeting.pack[]
    
    73 at position [75, 75]

Here’s the window that the code produces

Note that if you run this code on a different operating system that uses different font sizes and styles, then the second label might become partially obscured by the window’s edge. That’s why

>>> greeting = tk.Label[text="Hello, Tkinter"]
97 isn’t used often. In addition to this, it has two main drawbacks

  1. Layout can be difficult to manage with
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    97. This is especially true if your application has lots of widgets
  2. Layouts created with
    >>> greeting = tk.Label[text="Hello, Tkinter"]
    
    97 aren’t responsive. They don’t change as the window is resized

One of the main challenges of cross-platform GUI development is making layouts that look good no matter which platform they’re viewed on, and

>>> greeting = tk.Label[text="Hello, Tkinter"]
97 is a poor choice for making responsive and cross-platform layouts

That’s not to say you should never use

>>> greeting = tk.Label[text="Hello, Tkinter"]
97. In some cases, it might be just what you need. 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 theo

Trình quản lý Hình học
>>> greeting = tk.Label[text="Hello, Tkinter"]
98

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ứ hai

Tậ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[]
6

Đây là cửa sổ kết quả trông như thế nào

Bạn đang sử dụng hai trình quản lý hình học trong ví dụ này. Mỗi khung được gắn vào

>>> import tkinter as tk
03 với trình quản lý hình học
>>> greeting = tk.Label[text="Hello, Tkinter"]
98

>>> window.mainloop[]
7

Each

>>> window.mainloop[]
03 is attached to its master
>>> import tkinter as tk
19 with
>>> 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. Tương tự, bố cục của mỗi
>>> greeting = tk.Label[text="Hello, Tkinter"]
56 được kiểm soát bằng trình quản lý hình học
>>> import tkinter as tk
10

Các khung trong ví dụ trước được đặt chặt chẽ cạnh nhau. To add some space around each frame, you can set the padding of each cell in the grid. 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

Hai loại đệm là đệm bên ngoài và đệm bên trong. Phần đệm bên ngoài thêm một số khoảng trống xung quanh bên ngoài ô lưới. Nó được kiểm soát bằng hai đối số từ khóa thành

>>> greeting = tk.Label[text="Hello, Tkinter"]
98

  1. >>> window.mainloop[]
    
    12 adds padding in the horizontal direction
  2. >>> window.mainloop[]
    
    13 thêm phần đệm theo hướng dọc

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 cũng có các tham số
>>> window.mainloop[]
12 và
>>> window.mainloop[]
13. Đ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[]
55

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
0

Phầ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ãn

Điều đó trông khá đẹp. 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. Cả
>>> window.mainloop[]
23 và
>>> window.mainloop[]
24 đều có ba lập luận cơ bản

  1. 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
  2. Cân nặng. A keyword argument called
    >>> window.mainloop[]
    
    31 that determines how the column or row should respond to window resizing, relative to the other columns and rows
  3. Kích cỡ nhỏ nhất. Đối số từ khóa có tên là
    >>> window.mainloop[]
    
    32 đặt kích thước tối thiểu của chiều cao hàng hoặc chiều rộng cột tính bằng pixel

>>> 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. Nếu một cột có trọng số là
>>> window = tk.Tk[]
39 và một cột khác có trọng số là
>>> window = tk.Tk[]
57, thì cột thứ hai sẽ mở rộng với tốc độ gấp đôi cột thứ nhất. Điều chỉnh tập lệnh trước đó để xử lý thay đổi kích thước cửa sổ tốt hơn

import 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. Điều này đảm bảo rằng hàng và cột mở rộng với cùng tốc độ bất cứ khi nào cửa sổ được thay đổi kích thước. Đố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ào

Theo 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àng

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
2

Mỗ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 đây

Bạ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

  • >>> window.mainloop[]
    
    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

The letters

>>> window.mainloop[]
54,
>>> window.mainloop[]
58,
>>> window.mainloop[]
56, and
>>> window.mainloop[]
60 come from the cardinal directions north, south, east, and west. Đặ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[]
4

Trong 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 is positioned in the bottom-left corner by passing
>>> window.mainloop[]
72 to
>>> window.mainloop[]
53. Here’s what that looks like in the window

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. In order to fill the grid, you can specify
>>> window.mainloop[]
75 to force the widget to fill the cell in the vertical direction, or
>>> window.mainloop[]
76 to fill the cell in the horizontal direction. Để đ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ày

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
5

Here’s what the output looks like

Đ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 các hiệu ứng 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. The correspondence between the
>>> window.mainloop[]
53 and
>>> greeting.pack[]
21 parameters is summarized in the following table

>>> 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 is a powerful geometry manager. 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. When you’re creating new Tkinter applications, you should consider using
>>> greeting = tk.Label[text="Hello, Tkinter"]
98 as your primary geometry manager

Ghi 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 TkDocs

Giờ đâ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 ads

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 biểu mẫu nhập địa chỉHiển thị/Ẩn

Below is an image of an address entry form made with 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

Solution. 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"]
98

Mộ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ường

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
6

Khô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ản

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
7

Trong 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[]
04

When 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. Điều đó thật tuyệt, nhưng các ứng dụng không chỉ trông đẹp mắt—chúng thực sự cần phải làm gì đó. Trong phần này, bạn sẽ tìm hiểu cách đưa các ứng dụng của mình vào cuộc sống bằng cách thực hiện các hành động bất cứ khi nào một số sự kiện xảy ra

Sử dụng Sự kiện và Trình xử lý Sự kiện

Khi bạn tạo một ứng dụng Tkinter, bạn phải gọi

>>> import tkinter as tk
11 để bắt đầu vòng lặp sự kiện. Trong vòng lặp sự kiện, ứng dụng của bạn sẽ kiểm tra xem có sự kiện nào xảy ra không. Nếu vậy, thì nó sẽ thực thi một số mã để đáp lại

Vòng lặp sự kiện được cung cấp cho bạn với Tkinter, vì vậy bạn không phải viết bất kỳ mã nào để tự kiểm tra các sự kiện. Tuy nhiên, bạn phải viết mã sẽ được thực thi để phản hồi lại một sự kiện. In Tkinter, you write functions called event handlers for the events that you use in your application

Ghi chú. Sự kiện là bất kỳ hành động nào xảy ra trong vòng lặp sự kiện có thể kích hoạt một số hành vi trong ứng dụng, chẳng hạn như khi nhấn phím hoặc nút chuột

Khi một sự kiện xảy ra, một đối tượng sự kiện được phát ra, điều đó có nghĩa là một thể hiện của một lớp đại diện cho sự kiện đó được tạo ra. Bạn không cần phải lo lắng về việc tự khởi tạo các lớp này. Tkinter sẽ tự động tạo các thể hiện của các lớp sự kiện cho bạn

Bạn sẽ viết vòng lặp sự kiện của riêng mình để hiểu rõ hơn về cách thức hoạt động của vòng lặp sự kiện của Tkinter. Bằng cách đó, bạn có thể thấy vòng lặp sự kiện của Tkinter phù hợp với ứng dụng của bạn như thế nào và phần nào bạn cần tự viết

Giả sử có một danh sách tên là

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
06 chứa các đối tượng sự kiện. Một đối tượng sự kiện mới được tự động thêm vào
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
06 mỗi khi một sự kiện xảy ra trong chương trình của bạn. Bạn không cần thực hiện cơ chế cập nhật này. Nó chỉ tự động xảy ra với bạn trong ví dụ khái niệm này. Sử dụng một vòng lặp vô hạn, bạn có thể liên tục kiểm tra xem có bất kỳ đối tượng sự kiện nào trong
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
06

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
8

Ngay bây giờ, vòng lặp sự kiện mà bạn đã tạo không làm gì với

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
09. Hãy thay đổi điều đó. Giả sử ứng dụng của bạn cần phản hồi với các lần nhấn phím. Bạn cần kiểm tra xem
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
09 có được tạo bởi người dùng nhấn một phím trên bàn phím của họ hay không và nếu vậy, hãy chuyển
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
09 cho một chức năng xử lý sự kiện cho các lần nhấn phím

Assume 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. Tạo một hàm
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
16 mới và cập nhật mã vòng lặp sự kiện của bạn

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
9

Khi bạn gọi

>>> import tkinter as tk
11, một cái gì đó giống như vòng lặp trên sẽ chạy cho bạn. Phương pháp này đảm nhận hai phần của vòng lặp cho bạn

  1. Nó duy trì một danh sách các sự kiện đã xảy ra
  2. 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 đó

Cập nhật vòng lặp sự kiện của bạn để sử dụng

>>> import tkinter as tk
11 thay vì vòng lặp sự kiện của riêng bạn

>>> import tkinter as tk
>>> import tkinter.ttk as ttk
0

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
19 giúp bạn rất nhiều, nhưng đoạn mã trên còn thiếu thứ gì đó. Làm cách nào để Tkinter biết khi nào nên sử dụng
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
16?

Remove ads

Sử dụng
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
21

Để gọi một trình xử lý sự kiện bất cứ khi nào một sự kiện xảy ra trên một tiện ích, hãy sử dụng

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
21. Trình xử lý sự kiện được cho là bị ràng buộc với sự kiện vì nó được gọi mỗi khi sự kiện xảy ra. 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
1

Ở đây, trình xử lý sự kiện

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
16 bị ràng buộc với sự kiện
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
27 bằng cách sử dụng
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
28. Bất cứ khi nào một phím được nhấn trong khi ứng dụng đang chạy, chương trình của bạn sẽ in ký tự của phím được nhấn

Ghi chú. Đầu ra của chương trình trên không được in trong cửa sổ ứng dụng Tkinter. Nó được in cho

Nếu bạn chạy chương trình ở chế độ IDLE, thì bạn sẽ thấy đầu ra trong cửa sổ tương tác. Nếu bạn chạy chương trình từ thiết bị đầu cuối, thì bạn sẽ thấy đầu ra trong thiết bị đầu cuối của mình

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
21 luôn có ít nhất hai đối số

  1. Một sự kiện được đại diện bởi một chuỗi có dạng
    import tkinter as tk
    
    window = tk.Tk[]
    label = tk.Label[text="Python rocks!"]
    label.pack[]
    
    window.mainloop[]
    
    30, trong đó
    import tkinter as tk
    
    window = tk.Tk[]
    label = tk.Label[text="Python rocks!"]
    label.pack[]
    
    window.mainloop[]
    
    31 có thể là bất kỳ sự kiện nào của Tkinter
  2. Trình xử lý sự kiện là tên của hàm sẽ được gọi bất cứ khi nào sự kiện xảy ra

Trình xử lý sự kiện được liên kết với tiện ích mà trên đó

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
21 được gọi. Khi trình xử lý sự kiện được gọi, đối tượng sự kiện được chuyển đến hàm xử lý sự kiện

In 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. Ví dụ: bạn có thể liên kết trình xử lý sự kiện với tiện ích con

>>> import tkinter as tk
16 sẽ thực hiện một số hành động bất cứ khi nào nút được nhấn

>>> import tkinter as tk
>>> import tkinter.ttk as ttk
2

Trong ví dụ này, sự kiện

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
34 trên tiện ích con
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
35 được liên kết với trình xử lý sự kiện
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
36. Sự kiện
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
34 xảy ra bất cứ khi nào nhấn nút chuột trái trong khi chuột ở trên tiện ích. Có các sự kiện khác cho các lần nhấp vào nút chuột, bao gồm
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
38 cho nút chuột giữa và
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
39 cho nút chuột phải

Ghi chú. Để biết danh sách các sự kiện thường được sử dụng, hãy xem phần Loại sự kiện của Tkinter 8. 5 reference

Bạn có thể liên kết bất kỳ trình xử lý sự kiện nào với bất kỳ loại tiện ích nào bằng

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
21, nhưng có một cách đơn giản hơn để liên kết trình xử lý sự kiện với các lần nhấp vào nút bằng cách sử dụng thuộc tính
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
42 của tiện ích ________1____16

Sử dụng
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
42

Mỗi tiện ích

>>> import tkinter as tk
16 có thuộc tính
import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
42 mà bạn có thể gán cho một chức năng. Bất cứ khi nào nhấn nút, chức năng sẽ được thực thi

Hãy xem một ví dụ. 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. Nút bên trái sẽ được sử dụng để giảm giá trị trong
>>> import tkinter as tk
05 và nút bên phải sẽ tăng giá trị. Đây là mã cho cửa sổ

>>> import tkinter as tk
>>> import tkinter.ttk as ttk
3

Cửa sổ trông như thế này

Với bố cục ứng dụng được xác định, bạn có thể làm cho nó trở nên sống động bằng cách đưa ra một số lệnh cho các nút. Bắt đầu với nút bên trái. Khi nhấn nút này, nó sẽ giảm giá trị trong nhãn xuống một. Để làm được điều này, trước tiên bạn cần có câu trả lời cho hai câu hỏi

  1. Làm thế nào để bạn có được văn bản trong
    >>> import tkinter as tk
    
    05?
  2. Làm thế nào để bạn cập nhật văn bản trong
    >>> import tkinter as tk
    
    05?

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
4

Bâ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
5

import 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ày

Bạ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. Simulate rolling a six-sided dieShow/Hide

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 tin

Cử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
9

Hã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. You’ll walk through the code step by step. You can also find the full source code at the end of this section for your reference

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ố

  1. >>> import tkinter as tk
    
    17. Một tiện ích có tên là
    import tkinter as tk
    
    window = tk.Tk[]
    label = tk.Label[text="Python rocks!"]
    label.pack[]
    
    window.mainloop[]
    
    76 để nhập giá trị độ F
  2. >>> import tkinter as tk
    
    05. Một tiện ích có tên
    import tkinter as tk
    
    window = tk.Tk[]
    label = tk.Label[text="Python rocks!"]
    label.pack[]
    
    window.mainloop[]
    
    78 để hiển thị kết quả độ C
  3. >>> import tkinter as tk
    
    16. Một tiện ích có tên là
    import tkinter as tk
    
    window = tk.Tk[]
    label = tk.Label[text="Python rocks!"]
    label.pack[]
    
    window.mainloop[]
    
    80 đọc giá trị từ tiện ích
    >>> import tkinter as tk
    
    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

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 Fahrenheit

Bạn có thể tạo cho

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
80 một chút tinh tế 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ào

Bâ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[]

0

import 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[]

1

Ngườ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 nhau

Bạ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[]

2

Bạ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[]
76

Bâ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[]

3

Giố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[]

4

Cuối cùng, chạy ứng dụng

>>> tk.Label[]


>>> ttk.Label[]

5

Rằ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[]

6

Hà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[]
78

Bâ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

  1. Tiện ích
    >>> import tkinter as tk
    
    16 có tên là
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    32 để mở tệp để chỉnh sửa
  2. Tiện ích
    >>> import tkinter as tk
    
    16 có tên là
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    34 để lưu tệp
  3. Tiện ích
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    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

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

  1. Một cột hẹp bên trái dành cho các nút
  2. 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út

Bâ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
    >>> import tkinter as tk
    
    20
  • Dòng 3 và 4 tạo một cửa sổ mới với tiêu đề
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    54
  • 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. Tại đâ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[]

1

Hã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[]

2

Hai 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ình

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
>>> 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ước

Bạ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, 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
34

Bâ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[]

3

Hai 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 trong cột đầu tiên và
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
36 trong 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ướng

Bâ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[]

4

Cử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
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    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
  • 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ì
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    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
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    36
  • Dòng 10 xóa nội dung hiện tại của
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    36 bằng cách sử dụng
    >>> import tkinter as tk
    
    71
  • Dòng 11 và 12 mở tệp đã chọn và
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    13 nội dung của nó trước khi lưu trữ
    >>> import tkinter as tk
    
    34 dưới dạng chuỗi
  • Dòng 13 gán chuỗi
    >>> import tkinter as tk
    
    34 cho
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    36 bằng cách sử dụng
    >>> import tkinter as tk
    
    72
  • 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. First, import
>>> tk.Label[]


>>> ttk.Label[]

04 from
>>> tk.Label[]


>>> ttk.Label[]

05 by adding the following import to the top of your program

>>> from tkinter import *
>>> from tkinter.ttk import *

>>> Label[]


>>> Text[]

6

Tiế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[]

7

Save the file and run it to check that everything is working. Then try opening a text file

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. You’ll use the
>>> tk.Label[]


>>> ttk.Label[]

27 dialog in the
>>> tk.Label[]


>>> ttk.Label[]

05 module for this. 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. Here’s a function that does just this

>>> from tkinter import *
>>> from tkinter.ttk import *

>>> Label[]


>>> Text[]

8

Here’s how this code works

  • Lines 19 to 22 use the
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    27 dialog box to get the desired save location from the user. The selected file path is stored in the
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    06 variable
  • Lines 23 and 24 check to see if the user closes the dialog box or clicks the Cancel button. If so, then
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    06 will be
    >>> tk.Label[]
    
    
    >>> ttk.Label[]
    
    
    08, and the function will return without executing any of the code to save the text to a file
  • Line 25 creates a new file at the selected file path
  • Line 26 extracts the text from
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    
    36 with
    >>> import tkinter as tk
    
    70 method and assigns it to the variable
    >>> import tkinter as tk
    
    34
  • Line 27 writes
    >>> import tkinter as tk
    
    34 to the output file
  • Line 28 updates the title of the window so that the new file path is displayed in the window title

Now you can update the program so that

>>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 calls
>>> tk.Label[]


>>> ttk.Label[]

39 when it’s clicked. Again, there are a few things you need to do in order to update the program. First, import
>>> tk.Label[]


>>> ttk.Label[]

27 from
>>> tk.Label[]


>>> ttk.Label[]

05 by updating the import at the top of your script, like so

>>> from tkinter import *
>>> from tkinter.ttk import *

>>> Label[]


>>> Text[]

9

Finally, set the

import tkinter as tk

window = tk.Tk[]
label = tk.Label[text="Python rocks!"]
label.pack[]

window.mainloop[]
42 attribute of
>>> import tkinter as tk
>>> import tkinter.ttk as ttk
34 to
>>> tk.Label[]


>>> ttk.Label[]

44

>>> import tkinter as tk
00

Save the file and run it. You’ve now got a minimal yet fully functional text editor

Bạn có thể mở rộng khối mã bên dưới để xem toàn bộ tập lệnh

Text Editor Application Full Source CodeShow/Hide

Đây là kịch bản đầy đủ để bạn tham khảo

>>> import tkinter as tk
01

You’ve now built two GUI applications in Python and applied many of the skills that you’ve learned throughout this tutorial. That’s no small achievement, so take some time to feel good about what you’ve done. You’re now ready to tackle some applications on your own

Conclusion

In this tutorial, you learned how to get started with Python GUI programming. Tkinter is a compelling choice for a Python GUI framework because it’s built into the Python standard library, and it’s relatively painless to make applications with this framework

Throughout this tutorial, you’ve learned several important Tkinter concepts

  • How to work with widgets
  • How to control your application layout with geometry managers
  • How to make your applications interactive
  • How to use five basic Tkinter widgets.
    >>> import tkinter as tk
    
    05,
    >>> import tkinter as tk
    
    16,
    >>> import tkinter as tk
    
    17,
    >>> import tkinter as tk
    
    18, and
    >>> import tkinter as tk
    
    19

Now that you’ve mastered the foundations of Python GUI programming with Tkinter, the next step is to build some of your own applications. What will you create? Share your fun projects down in the comments below

Additional Resources

In this tutorial, you touched on just the foundations of creating Python GUI applications with Tkinter. There are a number of additional topics that aren’t covered here. In this section, you’ll find some of the best resources available to help you continue on your journey

Tkinter References

Here are some official resources to check out

  • The official Python Tkinter reference documentation covers Python’s Tkinter module in moderate depth. It’s written for more advanced Python developers and isn’t the best resource for beginners
  • Tkinter 8. 5 reference. a GUI for Python is an extensive reference covering the majority of the Tkinter module. It’s exhaustive, but it’s written in the reference style without commentary or examples
  • The Tk Commands reference is the definitive guide to commands in the Tk library. It’s written for the Tcl language, but it answers a lot of questions about why things work the way they do in Tkinter

Additional Widgets

In this tutorial, you learned about the

>>> import tkinter as tk
05,
>>> import tkinter as tk
16,
>>> import tkinter as tk
17,
>>> import tkinter as tk
18, and
>>> import tkinter as tk
19 widgets. 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. Here are some resources to continue learning about widgets

  • The TkDocs Tkinter Tutorial is a fairly comprehensive guide for Tk, the underlying code library used by Tkinter. Examples are presented in Python, Ruby, Perl, and Tcl. You can find several examples of widgets beyond those covered here in two sections
    • Basic Widgets covers the same widgets as this tutorial, plus a few more
    • More Widgets covers several additional widgets
  • The official Python docs cover additional widgets
    • ttk themed widgets covers the Tk themed widget set
    • Scrolled Text Widget details a
      >>> import tkinter as tk
      
      18 widget combined with a vertical scroll bar

Application Distribution

Once you’ve created an application with Tkinter, you probably want to distribute it to your colleagues and friends. Here are some tutorials to get you going with that process

  • Using PyInstaller to Easily Distribute Python Applications
  • 4 Attempts at Packaging Python as an Executable
  • Building Standalone Python Applications with PyOxidizer

Other GUI Frameworks

Tkinter isn’t your only choice for a Python GUI framework. If Tkinter doesn’t meet the needs of your project, then here are some other frameworks to consider

  • How to Build a Python GUI Application With wxPython
  • Python and PyQt. Building a GUI Desktop Calculator
  • Building a Mobile Application With the Kivy Python Framework
  • PySimpleGUI. The Simple Way to Create a GUI With Python

Take the Quiz. Test your knowledge with our interactive “Python GUI Programming With Tkinter” quiz. Upon completion you will receive a score so you can track your learning progress over time

Take the Quiz »

Mark as Completed

🐍 Python Tricks 💌

Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team

Send Me Python Tricks »

About David Amos

David is a writer, programmer, and mathematician passionate about exploring mathematics through code

» More about David

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are

Aldren

Bartosz

Geir Arne

Jaya

Joanna

Kate

Master Real-World Python Skills With Unlimited Access to Real Python

Join us and get access to thousands of tutorials, hands-on video courses, and a community of expert Pythonistas

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 Share Share Email

Bà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

Làm cách nào để nhận đầu vào từ GUI trong Python?

Chúng tôi có thể nhận Dữ liệu đầu vào của người dùng trong kiểu nhập văn bản Một dòng thông qua tiện ích Mục nhập bằng phương thức get[] . Để hiển thị đầu vào Đã chụp, chúng ta có thể in thông báo trên màn hình hoặc hiển thị đầu vào với sự trợ giúp của tiện ích Nhãn.

Làm cách nào để lấy giá trị từ TextBox trong Python?

Approach. .
Create Tkinter window
Create a TextBox widget
Create a Button widget
Create a function that will return text from textbox using get[] method after hitting a button

Công dụng của Tk[] trong tkinter là gì?

In Tk, to perform an action on a widget , use the widget name as a command, and follow it with an action name, possibly with arguments [options]. In Tkinter, you call methods on the class instance to invoke actions on the widget.

Which widget are used to get the data from the user?

Entry widgets are the basic widgets of Tkinter used to get input, i. e. text strings, from the user of an application.

Chủ Đề