Как изменить цвет кнопки?
Для изменения цвета фона и текста кнопки используем, соответственно, свойства background и color, добавляя их к селектору button , как показано в примере 1.
Пример 1. Цветные кнопки
Основные параметры кнопки применяем к селектору button , а дополнительно вводим разные классы, чтобы легко менять цвет кнопок. На рис. 1 продемонстрирован результат данного примера, в котором создаются плоские одноцветные кнопки.
Рис. 1. Цветные кнопки
См. также
- background
- color
- currentColor
- text-fill-color
- Атрибут link
- Атрибуты
- Единицы цвета в CSS
- Кнопки
- Кнопки
- Кнопки в Bootstrap 4
- Линейный градиент
- Наследование в CSS
- Несколько фоновых картинок
- Работа с типографикой
- Создание кнопок
- Спрайты
- Установка фона и градиента
- Фоновая картинка
Переключение цвета фона кнопок
Добрый день, у меня есть 6 кнопок, как при нажатии на одну кнопку именно она становилась зеленой, а все остальные оставались без изменений (были серого цвета), а при нажатии на другую кнопку первая становилась серой, а новая становилась зеленой, заранее спасибо
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import tkinter as tk root = tk.Tk() btn1 = tk.Button(root,text="one") btn1.pack() btn2 = tk.Button(root,text="two") btn2.pack() btn3 = tk.Button(root,text="tree") btn3.pack() btn4 = tk.Button(root,text="four") btn4.pack() btn5 = tk.Button(root,text="five") btn5.pack() btn6 = tk.Button(root,text="six") btn6.pack() root.mainloop()
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Переключение цвета фона кнопок
Добрый день, у меня есть поле 10 на 10, как при нажатии на одну ячейку именно она становилась.
Переключение фона окна кнопками RadioButton
Доброго времени суток! Промучился уже пару часов с этой дурацкой функцией 🙁 Вообщем-то мне надо.
Запоминание и установка цвета фона по нажатию кнопок мыши
Задача такова, нужно определить цвет по нажатию левой клавиши мыши запомнить его, потом его.
Изменение цвета фона символов при нажатии кнопок мыши
Задание: .286 data SEGMENT merr db 13,10,13,10,’Mouse can not be initialized$’ .
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
redded123, так?
Регистрация: 13.03.2020
Сообщений: 101
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624

Сообщение было отмечено redded123 как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import tkinter as tk from functools import partial root = tk.Tk() def click(n): for j in range(len(btns)): if j != n: btns[j].configure(bg='grey') else: btns[j].configure(bg='green') btns = [] for i, e in enumerate(["one", "two", "three", "four", "five", "six"]): btn = tk.Button(root, bg='grey', width=20, text=e, command=partial(click, i)) btn.pack() btns.append(btn) root.mainloop()
Добавлено через 41 секунду
Костыльно конечно.
Как же в Qt все прекрасно.
Регистрация: 13.03.2020
Сообщений: 101
Спасибо, работает всё замечательно
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
redded123, не за что.
Кстати, partial можно убрать
from functools import partial
btn = tk.Button(root, bg='grey', width=20, text=e, command=lambda x=i: click(x))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Плавное изменение цвета фона по времени в рандомные цвета
В общем, есть изображение (фон), мне необходимо, чтобы оно плавно окрашивалось в различные цвета.
Оперативное изменение цвета фона и цвета символов строки.
я уже задала строку,вывела на экран в виде бесконечно бегущей строки. осталось сделать оперативное.
Как сделать html-страничку с выбором названия цвета и в зависимости от выбранного цвета менять цвет фона?
Как сделать html-страничку с выбором названия цвета и в зависимости от выбранного цвета менять цвет.
Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы
1. Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы. 2.
Изменение цвета текста и цвета фона
Вот есть простая линейная программа. Мне интересно как в ней изменить цвет текста и\или фона? И.

Смена цвета кнопок, смен цвета меток
Разместите на форме ряд кнопок (Button) и ряд меток (Label). Создайте обработчики события нажатия.

Переключение кнопок
Подскажите как можно реализовать переключение вида кнопок, т.е. не css, а сам функционал
Tkinter/Button
Button (рус. Кнопка) — виджет Tkinter, представляющий из себя обычную кнопку.
Параметры [ ]
- LEFT — по левому краю
- CENTER — по центру
- RIGHT — по правому краю
- SUNKEN
- RAISED
- GROOVE
- RIDGE
- NORMAL — состояние по умолчанию
- DISABLED — кнопка не работает
- ACTIVE — состояние, когда наведён курсор
activebackground [ ]
btn = Button(root, text='Button', activebackground='red')
activeforeground [ ]
btn = Button(root, text='Button', activeforeground='#fff')
command [ ]
def changecolor(): btn['bg'] = 'blue' btn = Button(root, text='Button', command=changecolor)
font [ ]
btn = Button(root, text='Button', font='Courier 20')
Работа с цветами и шрифтами / tkinter 7
В примерах из прошлых материалов цвета задавались с помощью их названий: например, white, blue или yellow. Эти значения передаются в виде строк параметрам foreground и background , которые изменяют цвет текста и фона виджета соответственно.
Названия цветов дальше уже привязываются к RGB-значениям (аддитивной модели, которая представляет цвета за счет комбинации интенсивности красного, зеленого и синего цветов). Этот перевод делается на основе таблицы, которая отличается от платформы к платформе. Если же нужно отображать один и тот же цвет на разных платформах, то можно передавать RGB-значение в параметры виджета.
Следующее приложение показывает, как можно динамически менять параметры foreground и background у метки, которая демонстрирует зафиксированный текст:

Цвета определены в формате RGB и выбираются с помощью нативного модального окна. На следующем скриншоте представлено диалоговое окно из Windows 10:

Традиционно будем работать с настройками виджета с помощью кнопок — по одной для каждого параметра. Основное отличие по сравнению с предыдущими примерами в том, что значения могут быть прямо выбраны с помощью диалогового окна askcolor из модуля tkinter.colorchooser :
from functools import partial import tkinter as tk
from tkinter.colorchooser import askcolor class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Демо с цветами")
text = "Шустрая бурая лисица прыгает через ленивого пса"
self.label = tk.Label(self, text=text)
self.fg_btn = tk.Button(self, text="Установить цвет текста",
command=partial(self.set_color, "fg"))
self.bg_btn = tk.Button(self, text="Установить цвет фона",
command=partial(self.set_color, "bg"))
self.label.pack(padx=20, pady=20)
self.fg_btn.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.bg_btn.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
def set_color(self, option):
color = askcolor()[1]
print("Выбрать цвет:", color)
self.label.config(**)
if __name__ == "__main__":
app = App()
app.mainloop()Если нужно проверить RGB-значение выбранного цвета, то его можно вывести в консоль при подтверждении выбора. Если же ничего не было выбрано, то и консоль останется пустой.
Как работает настройка цвета
Обе кнопки используют функцию partial в качестве обратного вызова. Это инструмент из модуля functools , который создает новый вызываемый объект. Он ведет себя как оригинальная функция, но с некоторыми зафиксированными аргументами. Возьмем в качестве примера такую инструкцию:
tk.Button(self, command=partial(self.set_color, "fg"), . )Предыдущая инструкция выполняет то же действие, что и следующая:
tk.Button(self, command=lambda: self.set_color("fg"), . )Так делается для того, чтобы переиспользовать метод set_color() из модуля functools . Это особенно полезно в более сложных сценариях, например, когда нужно создать несколько функций, и очевидно, что некоторые аргументы заданы заранее.
Нужно лишь помнить тот нюанс, что foreground и background кратко записаны как fg и bg . Эти строки распаковываются с помощью ** при настройке виджета в инструкции:
def set_color(self, option):
color = askcolor()[1]
print("Выбрать цвет:", color)
self.label.config(**) # same as (fg=color)
or (bg=color)askcolor возвращает кортеж с двумя элементами, которые представляют собой выбранный цвет. Первый — кортеж цветов из RGB-значений, а второй — шестнадцатеричное представление в виде строки. Поскольку первый вариант не может быть прямо передан в параметры виджета, используется второй.
Если нужно преобразовать название цвета в RGB-формат, можно использовать метод winfo_rgb() из предыдущего виджета. Поскольку он возвращает кортеж целых чисел от 0 до 65535, которые представляют 16-битные RGB-значения, их можно конвертировать в более привычное представление #RRGGBB , сдвинув вправо 8 битов:
rgb = widget.winfo_rgb("lightblue")
red, green, blue = [x>>8 for x in rgb]
print("#".format(red, green, blue))В предыдущем коде использовался для форматирования каждого целого числа в два шестнадцатеричных.
Задание шрифтов виджета
В Tkinter можно менять шрифт виджета на кнопках, метках и записях. По умолчанию он соответствует системному, но его можно поменять с помощью параметра font .
Следующее приложение позволяет пользователю динамически менять тип шрифта и его размер для статического текста. Попробуйте разные значения, чтобы увидеть результаты настройки:
В данном случае для настройки используются два вида виджетов: выпадающее меню со списком шрифтов и поле ввода с предустановленными вариантами Spinbox для выбора размера:
import tkinter as tk class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Демо шрифтов")
text = "Шустрая бурая лисица прыгает через ленивого пса"
self.label = tk.Label(self, text=text)
self.family = tk.StringVar()
self.family.trace("w", self.set_font)
families = ("Times", "Courier", "Helvetica")
self.option = tk.OptionMenu(self, self.family, *families)
self.size = tk.StringVar()
self.size.trace("w", self.set_font)
self.spinbox = tk.Spinbox(self, from_=8, to=18,
textvariable=self.size)
self.family.set(families[0])
self.size.set("10")
self.label.pack(padx=20, pady=20)
self.option.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.spinbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
def set_font(self, *args):
family = self.family.get()
size = self.size.get()
self.label.config(font=(family, size)) if __name__ == "__main__":
app = App()
app.mainloop()Стоит обратить внимание, что у переменных Tkinter есть некоторые значения по умолчанию, которые привязаны к каждому полю.
Как работает настройка шрифтов?
Кортеж FAMILIES включает три типа шрифтов, которые Tk гарантированно поддерживает на всех платформах: Times (Times New Roman), Courier и Helvetica. Между ними можно переключаться с помощью виджета OptionMenu , который привязан к переменной self.family .
Подобный подход используется также для того, чтобы задать размер шрифта в Spinbox . Обе переменных вызывают метод, который меняет шрифт метки:

