Как поменять цвет окна в tkinter
Перейти к содержимому

Как поменять цвет окна в tkinter

  • автор:

Как поменять цвет окна в tkinter

Ряд виджетов в Tkinter поддерживают установку цвета для различных аспектов. Например, у виджета Label можно установить параметры foreground и background , которые отвечают за цвет текста и фона соответственно. У некоторых виджетов настройки цвета спрятаны в параметре style.

Цвет можно установить разными способами:

    Именнованные цвета, например, «red», который соответствует красному цвету. В зависимости от платформы набор доступных именнованных цветов может отличаться. Все доступные именнованные цвета можно посмотреть в документации. Например:

ttk.Label(text="Hello World", foreground="red")
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello World", padding=8, foreground="#01579B", background="#B3E5FC") label.pack(anchor=CENTER, expand=1) root.mainloop()

Установка цвета в Tkinter и Python

Если нам даны отдельные коды RGB-составляющих, то их можно сконвертировать в шестнадцатеричный код цвета:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def get_rgb(rgb): return "#%02x%02x%02x" % rgb label = ttk.Label(text="Hello World", padding=8, foreground=get_rgb((0, 77, 64)), background=get_rgb((128, 203, 196))) label.pack(anchor=CENTER, expand=1) root.mainloop()

Здесь функция get_rgb в качестве параметра получает кортеж из трех составляющих цвет RGB и с помощью форматирования строки переводит значения кортежа в шестнадцатеричный код

Как менять цвет окна в цикле Tkinter?

Сейчас окно залито черным. Как сделать так, чтобы цвет менялся каждые 2 секунды?
То есть чтобы я запустил окно, и цвет меняется с черного на белый каждые 2 секунды, пока не закрою программу?

  • Вопрос задан более трёх лет назад
  • 2628 просмотров

Комментировать

Решения вопроса 1

Сергей Горностаев @sergey-gornostaev Куратор тега Python

Седой и строгий

from itertools import cycle import tkinter as tk colors = cycle(['red', 'green', 'blue']) def change_color(): root['bg'] = next(colors) root.after(2000, change_color) root = tk.Tk() root.title("Test") root.geometry("800x800+0+0") change_color() root.mainloop()

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Как поменять цвет окна в tkinter

На этом шаге мы рассмотрим инструменты для решения указанной задачи .

  • Active и Normal — компонент активен (окно находится в фокусе ввода);
  • Disabled (значение 1) — компонент недоступен;
  • Inactive (значение 2) — компонент неактивен (окно находится вне фокуса ввода).

Получить текущую палитру компонента позволяет его метод palette() . Чтобы изменить цвет для какой-либо роли и состояния, следует воспользоваться методом setColor() класса QPalette . Формат метода:

setColor ([Состояние>, ]Роль>, Цвет>)

В параметре < Роль >указывается, для какого элемента изменяется цвет. Например, атрибут Window (или Background ) изменяет цвет фона, a WindowText (или Foreground ) — цвет текста. Полный список атрибутов имеется в документации по классу QPalette (см. https://doc.qt.io/qt-5/qpalette.html ).

В параметре < Цвет >указывается цвет элемента. В качестве значения можно указать атрибут из класса QtCore.Qt (например, black , white и т. д.) или экземпляр класса QColor (например, QColor(«red») , QColor(«#ff0000») , QColor(255, 0, 0) и др.).

После настройки палитры необходимо вызвать метод setPalette() компонента и передать этому методу измененный объект палитры. Следует помнить, что компоненты-потомки по умолчанию имеют прозрачный фон и не перерисовываются автоматически. Чтобы включить перерисовку, необходимо передать значение True методу setAutoFillBackground() окна.

Изменить цвет фона можно также с помощью CSS -атрибута background-соlor . Для этого следует передать таблицу стилей в метод setStyleSheet() компонента. Таблицы стилей могут быть внешними (подключение через командную строку), установленными на уровне приложения (с помощью метода setStyleSheet() класса QApplication ) или установленными на уровне компонента (с помощью метода setStyleSheet() класса QWidget ). Атрибуты, установленные последними, обычно перекрывают значения аналогичных атрибутов, указанных ранее. Если вы занимались Web -программированием, то CSS вам уже знаком, а если нет, то придется дополнительно изучить HTML и CSS .

Создадим окно с надписью. Для активного окна установим зеленый цвет, а для неактивного — красный. Цвет фона надписи сделаем белым. Для изменения фона окна используем палитру, а для изменения цвета фона надписи — CSS -атрибут background-соlor .

# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("Изменение цвета фона окна") window.resize(300, 100) pal = window.palette() pal.setColor(QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QColor("#008800")) pal.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.Window, QtGui.QColor("#ff0000")) window.setPalette(pal) label = QtWidgets.QLabel("Текст надписи") label.setAlignment(QtCore.Qt.AlignHCenter) label.setStyleSheet("background-color: #ffffff;") label.setAutoFillBackground(True) vbox = QtWidgets.QVBoxLayout() vbox.addWidget(label) window.setLayout(vbox) window.show() sys.exit(app.exec_())

Архив с файлом можно взять здесь.

Результат работы приложения изображен на рисунке 1.

Рис.1. Внешний вид активного (вверху) и неактивного (внизу) окна

На следующем шаге мы рассмотрим вывод изображения в качестве фона .

Переключение цвета фона кнопок

Author24 — интернет-сервис помощи студентам

Добрый день, у меня есть поле 10 на 10, как при нажатии на одну ячейку именно она становилась зеленой, а все остальные оставались без изменений (были серого цвета), а при последующем нажатии на другую кнопку первая оставалась зелёной, заранее спасибо

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
from tkinter import * import random GRID_SIZE = 10 SQUARE_SIZE = 30 root = Tk() root.title("Object Minesweep") c = Canvas(root, width=GRID_SIZE * SQUARE_SIZE, height=GRID_SIZE * SQUARE_SIZE) c.pack() for i in range(GRID_SIZE): for j in range(GRID_SIZE): c.create_rectangle(i * SQUARE_SIZE, j * SQUARE_SIZE, i * SQUARE_SIZE + SQUARE_SIZE, j * SQUARE_SIZE + SQUARE_SIZE, fill='gray') import tkinter as tk from functools import partial def click(n): for j in range(len(btns)): if j != n: btns[j].configure(bg='grey') else: btns[j].configure(bg='green') root.mainloop()

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Переключение цвета фона кнопок
Добрый день, у меня есть 6 кнопок, как при нажатии на одну кнопку именно она становилась зеленой, а.

Переключение фона окна кнопками RadioButton
Доброго времени суток! Промучился уже пару часов с этой дурацкой функцией 🙁 Вообщем-то мне надо.

Запоминание и установка цвета фона по нажатию кнопок мыши
Задача такова, нужно определить цвет по нажатию левой клавиши мыши запомнить его, потом его.

Изменение цвета фона символов при нажатии кнопок мыши
Задание: .286 data SEGMENT merr db 13,10,13,10,’Mouse can not be initialized$’ .

Плавное изменение цвета фона по времени в рандомные цвета
В общем, есть изображение (фон), мне необходимо, чтобы оно плавно окрашивалось в различные цвета.

1544 / 721 / 313
Регистрация: 02.05.2020
Сообщений: 1,604

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
from tkinter import Tk, Canvas GRID_SIZE = 10 SQUARE_SIZE = 30 def click(event): item = event.widget.find_withtag('current')[0] c.itemconfig(item, fill="green") root = Tk() root.title("Object Minesweep") c = Canvas(root, width=GRID_SIZE * SQUARE_SIZE, height=GRID_SIZE * SQUARE_SIZE) c.pack() for i in range(GRID_SIZE): for j in range(GRID_SIZE): r = c.create_rectangle(i * SQUARE_SIZE, j * SQUARE_SIZE, i * SQUARE_SIZE + SQUARE_SIZE, j * SQUARE_SIZE + SQUARE_SIZE, fill='gray') c.tag_bind(r, '', click) root.mainloop()

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

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

Как сделать html-страничку с выбором названия цвета и в зависимости от выбранного цвета менять цвет фона?
Как сделать html-страничку с выбором названия цвета и в зависимости от выбранного цвета менять цвет.

Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы
1. Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы. 2.

Изменение цвета текста и цвета фона
Вот есть простая линейная программа. Мне интересно как в ней изменить цвет текста и\или фона? И.

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

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *