Tkinter «Hello, World!» в Python — инструкция по созданию
В этом уроке рассмотрим инструкцию, как создать программу Tkinter «Hello, World!» в Python.
- Создание окна
- Поиск неисправностей
- Отображение метки
- Исправление размытия пользовательского интерфейса в Windows
Создание окна
Следующая программа показывает, как отобразить окно на экране:
import tkinter as tk root = tk.Tk() root.mainloop()
Если вы запустите программу, вы увидите следующее окно:
Как это работает.
- Сначала импортируем модуль tkinter как tk в программу:
import tkinter as tk
- Во-вторых, создайте экземпляр класса tk.Tk, который создаст окно приложения:
root = tk.Tk()
По соглашению, главное окно в Tkinter называется root. Но вы можете использовать любое другое имя, например main.
- В-третьих, вызовите метод mainloop() объекта главного окна:
root.mainloop()
Метод mainloop() обеспечивает видимость главного окна на экране.
Если не вызвать метод mainloop(), главное окно отобразится и исчезнет почти мгновенно — слишком быстро, чтобы заметить его появление.
Кроме того, метод mainloop() обеспечивает продолжение отображения и работы главного окна до тех пор, пока вы его не закроете.
Обычно в программе Tkinter вызов метода mainloop() выполняется последним оператором после создания виджетов.
Поиск неисправностей
Модуль tkinter — встроенный модуль Python. Но иногда, например, в Ubuntu вы можете столкнуться со следующей ошибкой:
ImportError: No module named Tkinter
В этом случае вам необходимо установить модуль tkinter с помощью следующей командной строки:
sudo apt-get install python3-tk
Отображение метки
Теперь давайте поместим компонент в окно. В Tkinter такие компоненты называются виджетами.
Следующий код добавляет виджет метки в корневое окно:
import tkinter as tk root = tk.Tk() # place a label on the root window message = tk.Label(root, text="Hello, World!") message.pack() # keep the window displaying root.mainloop()
Если вы запустите программу, вы увидите следующий вывод:
Как это работает.
Чтобы создать виджет, принадлежащий контейнеру, используйте следующий синтаксис:
widget = WidgetName(master, **options)
В этом синтаксисе:
- master — это родительское окно или фрейм, в котором вы хотите разместить виджет.
- options — это один или несколько ключевых аргументов, которые определяют конфигурации виджета.
В программе следующий код создает виджет Label, размещенный в корневом окне:
message = tk.Label(root, text="Hello, World!")
Следующий оператор размещает метку в главном окне:
message.pack()
Обратите внимание, что вы узнаете больше о методе pack() позже. Если вы не вызовете метод pack(), Tkinter все равно создаст виджет. Однако виджет не будет виден.
Исправление размытия пользовательского интерфейса в Windows
Если вы обнаружили, что текст и пользовательский интерфейс в Windows размыты, вы можете исправить это с помощью библиотеки Python ctypes.
- Сначала импортируйте модуль ctypes:
from ctypes import windll
- Во-вторых, вызовите функцию SetProcessDpiAwareness():
windll.shcore.SetProcessDpiAwareness(1)
Если вы хотите, чтобы приложение работало на таких платформах, как Windows, macOS и Linux, вы можете поместить приведенный выше код в блок try…finally:
try: from ctypes import windll windll.shcore.SetProcessDpiAwareness(1) finally: root.mainloop()
В Windows код в блоке try будет работать правильно. Однако в macOS или Linux он не будет работать, но код в блокировке finally всегда будет выполняться, что отображает главное окно.