Tkinter Window в Python — управление атрибутами окон
В этом уроке вы узнаете, как управлять различными атрибутами окна Tkinter в Python.
Начнем с простой программы, состоящей из окна:
import tkinter as tk root = tk.Tk() root.mainloop()
Выход:
Корневое окно имеет заголовок по умолчанию tk. Оно также имеет три системные кнопки, включая «Свернуть», «Развернуть» и «Закрыть».
Давайте узнаем, как изменить атрибуты корневого окна.
- Изменение заголовка окна
- Изменение размера и местоположения окна
- Выбор изменения размера
- Прозрачность
- Порядок расположения окон
- Изменение значка по умолчанию
Изменение заголовка окна
Чтобы изменить заголовок окна, используйте метод title() следующим образом:
window.title(new_title)
Например, следующий код изменяет заголовок корневого окна на «Tkinter Window Demo»:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.mainloop()
Выход:
Чтобы получить текущий заголовок окна, используйте метод title() без аргументов:
title = window.title()
Изменение размера и местоположения окна
В Tkinter положение и размер окна на экране определяются его геометрией.
Ниже показана спецификация геометрии:
widthxheight±x±y
В этой спецификации:
- Ширина представляет собой ширину окна в пикселях.
- Высота представляет собой высоту окна в пикселях.
- Параметр x обозначает горизонтальное положение окна. Например, значение +50 означает, что левый край окна должен быть расположен на расстоянии 50 пикселей от левого края экрана. И наоборот, значение -50 означает, что правый край окна должен быть расположен на расстоянии 50 пикселей от правого края экрана.
- Параметр y обозначает вертикальное положение окна. Например, значение +50 означает, что верхний край окна должен быть расположен на 50 пикселей ниже верхней части экрана. И наоборот, значение -50 означает, что нижний край окна должен быть на 50 пикселей выше нижней части экрана.
Чтобы изменить размер и положение окна, используйте метод geometry():
window.geometry(new_geometry)
В следующем примере размер окна изменяется на 600×400, а положение окна — на 50 пикселей от верхнего и левого края экрана:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.geometry('600x400+50+50') root.mainloop()
Иногда вам может понадобиться центрировать окно на экране. Следующая программа иллюстрирует, как это сделать:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window - Center') window_width = 300 window_height = 200 # get the screen dimension screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() # find the center point center_x = int(screen_width/2 - window_width / 2) center_y = int(screen_height/2 - window_height / 2) # set the position of the window to the center of the screen root.geometry(f'{window_width}x{window_height}+{center_x}+{center_y}') root.mainloop()
Как это работает.
- Сначала получите ширину и высоту экрана с помощью методов winfo_screenwidth() и winfo_screenheight().
- Во-вторых, вычислите координату центра на основе ширины и высоты экрана и окна.
- Наконец, задайте геометрию для корневого окна с помощью метода geometry().
Если вы хотите получить текущую геометрию окна, вы можете использовать метод geometry() без указания каких-либо аргументов:
window.geometry()
Выбор изменения размера
По умолчанию вы можете изменять ширину и высоту окна. Чтобы предотвратить изменение размера окна, вы можете использовать метод resizable():
window.resizable(width,height)
Метод resizable() имеет два параметра, которые определяют, можно ли изменять размер ширины и высоты окна.
Ниже показано, как сделать окно фиксированного размера:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.geometry('600x400+50+50') root.resizable(False, False) root.mainloop()
Выход:
Если размер окна можно изменять, вы можете указать минимальный и максимальный размеры с помощью методов minsize() и maxsize():
window.minsize(min_width, min_height) window.maxsize(min_height, max_height)
Прозрачность
Tkinter позволяет указать прозрачность окна, установив его альфа-канал в диапазоне от 0,0 (полностью прозрачный) до 1,0 (полностью непрозрачный):
window.attributes('-alpha',0.5)
Следующий пример иллюстрирует окно с прозрачностью 50%:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.geometry('600x400+50+50') root.resizable(False, False) root.attributes('-alpha', 0.5) root.mainloop()
Выход:
Порядок расположения окон
Порядок стека окон относится к порядку окон, размещенных на экране снизу вверх. Более близкое окно находится наверху стека и перекрывает то, что ниже.
Чтобы гарантировать, что окно всегда находится наверху в порядке размещения, можно использовать атрибут -topmost следующим образом:
window.attributes('-topmost', 1)
Чтобы переместить окно вверх или вниз по стеку, можно использовать методы lift() и lower():
window.lift() window.lift(another_window) window.lower() window.lower(another_window)
Следующий пример помещает корневое окно поверх всех остальных окон. Другими словами, корневое окно всегда находится сверху:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.geometry('300x200+50+50') root.resizable(0, 0) root.attributes('-topmost', 1) root.mainloop()
Изменение значка по умолчанию
Окно Tkinter отображает значок по умолчанию. Чтобы изменить этот значок по умолчанию, выполните следующие действия:
- Подготовьте изображение в формате .ico. Если у вас есть изображение в других форматах, например png или jpg, вы можете конвертировать его в формат .ico. Существует множество онлайн-инструментов, которые позволяют сделать это довольно легко.
- Поместите значок в папку, доступную из программы.
- Вызовите метод iconbitmap() объекта окна.
Следующая программа иллюстрирует, как изменить значок по умолчанию на новый:
import tkinter as tk root = tk.Tk() root.title('Tkinter Window Demo') root.geometry('300x200+50+50') root.resizable(False, False) root.iconbitmap('./assets/pythontutorial.ico') root.mainloop()
Выход:
Если вы хотите использовать указанный выше значок, вы можете загрузить его на свой компьютер: