Стандартный диалог выбора цвета — это не украшение ради украшения. Сценарии могут передавать возвращаемую этим диалогом шестнадцатеричную строку цветов в уже знакомые нам параметры bg и fg настройки цветов виджетов. То есть параметры bg и fg принимают имя цвета (например, blue) и шестнадцатеричные строки со значениями насыщенности цветов RGB, возвращаемые функцией askcolor, которые начинаются с # (например, #8080ff из последней строки вывода в предыдущем разделе).
Это добавляет новое измерение в модификацию графических интерфейсов на базе tkinter: вместо того чтобы жестко определять значения цветов в создаваемых интерфейсах, можно создать кнопку, выводящую диалог выбора цвета, с помощью которой пользователи смогут осуществлять настройку цветов на лету. Нужно просто передать строку цвета методу config в обработчиках событий, как показано в примере 8.11.
Пример 8.11. PP4E\Gui\Tour\setcolor.py
from tkinter import *
from tkinter.colorchooser import askcolor
def setBgColor():
(triple, hexstr) = askcolor() if hexstr:
print(hexstr)
push.config(bg=hexstr)
root = Tk()
push = Button(root, text=’Set Background Color’, command=setBgColor) push.config(height=3, font=(‘times’, 20, ‘bold’)) push.pack(expand=YES, fill=BOTH) root.mainloop()
Этот сценарий создает окно, изображенное на рис. 8.16 (фон его кнопки зеленоватый, и вам придется поверить мне на слово). Нажатие кнопки выводит диалог выбора цвета, который мы видели выше. Цвет, выбранный в этом окне, становится цветом фона этой кнопки после нажатия кнопки OK в диалоге.
Рис. 8.16. Главное окно setcolor
Строки со значениями цвета также выводятся в поток stdout (окно консоли). Запустите этот сценарий на своем компьютере и поэкспериментируйте с возможными настройками цветов:
C:\…\PP4E\Gui\Tour> python setcolor.py
#0080c0
#408080
#77d5df
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011