Настройка внешнего вида виджетов

nastrojka vneshnego vida vidzhetov Экскурсия по tkinter, часть 1

До сих пор все кнопки и метки в наших примерах выводились с оформлением по умолчанию, стандартном для соответствующей платформы. В Windows это обычно означает, что они выводятся серым цветом, как в цветовой схеме, установленной на моем компьютере. Однако библиотека tkinter позволяет придавать виджетам любой другой внешний вид с помощью ряда параметров настройки виджетов и компоновки.

Поскольку обычно я не могу устоять перед соблазном определить для виджетов в примерах собственные настройки, хочу осветить эту тему в самом начале обзора. В примере 8.1 приводятся некоторые параметры настройки, доступные в tkinter.

Пример 8.1. PP4E\Gui\Tour\config-label.py

from tkinter import *

root = Tk()

labelfont = (‘times’, 20, bold’) # семейство, размер, стиль

widget = Label(root, text=’Hello config world’)

widget.config(bg=’black’, fg=’yellow’) # желтый текст на черном фоне widget.config(font=labelfont) # использовать увеличенный шрифт

widget.config(height=3, width=20) # начальный размер: строк,символов

widget.pack(expand=YES, fill=BOTH) root.mainloop()

Запомните, что с помощью метода config виджета можно в любой момент переопределить значения его параметров, что позволяет не передавать их все конструктору объекта. В данном случае мы используем эту возможность, чтобы установить параметры, которые определяют окно, изображенное на рис. 8.1.

Рис. 8.1. Нестандартный внешний вид метки

 

Если запустить сценарий на компьютере (увы, я не могу показать здесь в цвете, как это выглядит), то вы увидите, что текст метки выводится желтым цветом на черном фоне, причем шрифт сильно отличается от того, что мы до сих пор видели. Этот сценарий настраивает следующие параметры отображения метки:

Цвет

Установкой параметра bg метки определяется черный цвет ее фона. Аналогично параметр fg изменяет цвет переднего плана (текста) метки на желтый. Эти параметры цвета присутствуют у большинства виджетов tkinter, и в них указывается простое название цвета (например, blue’) или шестнадцатеричная строка. Поддерживается большинство знакомых названий цветов (если только вам не довелось работать для компании Crayola[XXXIII]). Чтобы более точно определить значение цвета, в этих параметрах можно также передавать строки с шестнадцатеричными значениями — они должны начинаться с символа # и содержать значения насыщенности красного, зеленого и голубого цветов с одинаковым количеством битов для каждого. Например, строка ‘#ff0000’ содержит по восемь битов для каждого цвета и определяет чистый красный цвет — «f» означает в шестнадцатеричном виде четыре единичных бита. Мы еще вернемся к шестнадцатеричному формату, когда встретимся с диалоговым окном выбора цвета далее в этой главе.

Размер

Для метки определяется точный размер в виде количества строк в высоту и символов в ширину путем установки параметров height и width. С помощью этих параметров можно увеличивать размеры метки по сравнению с теми, что устанавливаются менеджером компоновки по умолчанию.

Шрифт

В этом сценарии выбирается нестандартный шрифт для текста метки путем записи в параметр font кортежа из трех элементов, определяющих семейство шрифта, его размер и стиль (в данном случае: Times, 20 пунктов, полужирный). Стиль шрифта может принимать значения normal, bold, roman, italic, underline, overstrike и их сочетания (например, bold italic”). Библиотека tkinter гарантирует возможность использования названий семейств шрифтов Times, Courier и Helvetica на всех платформах, однако в некоторых системах могут использоваться и другие (например, system — системный шрифт в Windows). Такие настройки шрифта будут действовать для всех виджетов, содержащих текст, например меток, кнопок, полей ввода, списков и Text (последний может одновременно выводить текст, отображаемый различными шрифтами, с помощью «тегов»). Параметр font сохраняет возможность определять шрифт с помощью более старых определений в стиле X Window — длинных строк с дефисами и звездочками, однако более новая форма определения параметров шрифта в виде кортежа более независима от платформы.

Параметры компоновки

Наконец, метка может быть сделана расширяемой и растягиваемой в целом путем установки параметров компоновщика pack, таких как expand и fill, с которыми мы познакомились в предыдущей главе: метка увеличивается вместе с окном. При распахивании окна черный фон заполняет весь экран, а желтый текст помещается в центр — можете попробовать.

В данном сценарии итоговым результатом настроек является метка, по своему внешнему виду коренным образом отличающаяся от тех, что мы создавали до сих пор. Она больше не следует стандартам внешнего вида Windows, но такая согласованность не всегда важна. Для справки отмечу, что библиотека tkinter предоставляет дополнительные способы настройки внешнего вида, не используемые в данном сценарии, но которые могут встретиться вам в других сценариях:

Границы и рельефность

Параметр bd=N виджета можно использовать для установки ширины границы, а параметр relief=S — ее стиля. S может принимать значения FLAT, SUNKEN, RAISED, GROOVE, SOLID или RIDGE — все эти константы экспортирует модуль tkinter.

Курсор

Параметр cursor позволяет определять внешний вид указателя мыши при наведении его на виджет. Например, cursor=’gumbyизменяет стрелку на фигурку зеленого человечка. В число других имен указателей, часто используемых в этой книге, входят watch, pencil, cross и hand2.

Состояние

Некоторые виджеты поддерживают понятие состояния, влияющее на их внешний вид. Например, виджет с параметром state=DISABLED обычно рисуется на экране закрашенным (окрашивается в серый цвет) и делается неактивным. Значение NORMAL делает его обычным. Некоторые виджеты поддерживают также состояние READONLY, когда сам виджет отображается, как обычно, но он никак не откликается на попытки изменения.

Отступы (padding)

Вокруг многих виджетов (кнопок, меток и текста) можно добавить дополнительное пустое пространство с помощью параметров padx=N и pady=N. Интересно, что эти параметры можно определять и в вызовах метода pack (тогда пустое пространство добавляется вокруг виджета в целом), и в самом объекте виджета (в результате увеличивается сам графический элемент).

Чтобы проиллюстрировать некоторые из этих дополнительных настроек, в примере 8.2 создается кнопка, изображенная на рис. 8.2, и изменяется форма указателя мыши, когда он помещается над кнопкой.

Пример 8.2. PP4E\Gui\Tour\config-button.py

from tkinter import *

widget = Button(text=’Spam’, padx=10, pady=10)

widget.pack(padx=20, pady=20)

widget.config(cursor=’gumby’)

widget.config(bd=8, relief=RAISED)

widget.config(bg=’dark green’, fg=’white’)

widget.config(font=(‘helvetica’, 20, ‘underline italic’)) mainloop()

Рис. 8.2. Параметры кнопки в действии

 

Чтобы увидеть эффект, создаваемый этими двумя параметрами, попробуйте поиграть с ними на своем компьютере. Большинству виджетов можно придать новый внешний вид таким же способом, и в этой книге мы будем неоднократно встречаться с такими параметрами. Мы встретимся также с операционными параметрами, такими как focus (передает фокуса ввода), и другими. У виджетов могут быть десятки параметров, большинство из которых имеет разумные значения по умолчанию, создающие принятый на каждой оконной платформе внешний вид, что является одной из причин простоты использования tkinter. Но при необходимости tkinter позволяет создавать значительно более индивидуальные изображения.

# 4,

Дополнительные способы применения параметров настрой-

<« ки, обеспечивающих типичный внешний вид виджетов,

*’» f можно увидеть в разделе «Настройка виджетов с помощью  ■ классов» в предыдущей главе и особенно в примерах

ThemedButton. Теперь, когда вы больше знаете о настройках, вам будет проще понять, как настройки в этих примерах, выполняемые в подклассах виджетов, наследуются всеми экземплярами и подклассами. Новое расширение ttk, описываемое в главе 7, также реализует дополнительные способы настройки виджетов, вводя понятие тем оформления. Больше подробностей и ссылки на ресурсы, посвященные ttk, вы найдете в предыдущей главе.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий