Как сделать фон в python
Перейти к содержимому

Как сделать фон в python

  • автор:

Управление холстом/экраном в модуля turtle в Python

Размеры и цвет фона, очистка холста/экрана, пользовательские координаты

В материале представлены команды, отвечающие за управление холстом/экраном, в том числе текущий размер и фон холста, очистку холста, а так же создание пользовательской системы координат в модуле turtle .

Содержание:

  • turtle.bgcolor() устанавливает/возвращает цвет фона холста,
  • turtle.bgpic() устанавливает/возвращает фоновое изображение холста,
  • turtle.clear() удаляет рисунки всех перьев с холста,
  • turtle.clearscreen() удаляет рисунки всех перьев с холста,
  • turtle.reset() возвращает все перья на холсте в исходное состояние,
  • turtle.resetscreen() возвращает все перья на холсте в исходное состояние,
  • turtle.screensize() устанавливает/возвращает текущий размер холста,
  • turtle.setworldcoordinates() создание пользовательской системы координат.
turtle.bgcolor(*args) :

Метод turtle.bgcolor() устанавливает или возвращает цвет фона холста TurtleScreen .

Аргумент args : строка c цветом (например ‘blue’ ) или три числа в диапазоне 0..colormode режим или тройной кортеж таких чисел.

>>> import turtle >>> screen = turtle.Screen() >>> screen.bgcolor("yellow") >>> screen.bgcolor() # 'yellow' >>> screen.bgcolor("#800080") >>> screen.bgcolor() # (128.0, 0.0, 128.0) 
turtle.bgpic(picname=None) :

Метод turtle.bgpic() устанавливает фоновое изображение или возвращает имя текущего фонового изображения.

  • Если picname является именем файла, то установит соответствующее изображение в качестве фона.
  • Если имя изображения ‘nopic’, то удалит фоновое изображение, если оно есть.
  • Если picname равно None , то вернет имя файла текущего фонового изображения.

Аргумент picname – строка, имя gif-файла или «nopic» , или None

>>> import turtle >>> screen = turtle.Screen() >>> screen.bgpic() # 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif" 
turtle.clearscreen() ,
screen.clear() :

Методы turtle.clear() и turtle.clearscreen() удаляет все рисунки и всех перьев с экрана холста. Сбрасывает теперь пустой экран в исходное состояние: белый фон, без фонового изображения, без привязок событий.

Примечание. этот метод холста TurtleScreen доступен как глобальная функция только под именем turtle.clearscreen() . Глобальная функция turtle.clear() отличается от метода TurtleScreen.clear() .

turtle.reset() ,
turtle.resetscreen() :

Методы turtle.reset() и turtle.resetscreen() возвращает все перья на холсте/экране в исходное состояние.

Примечание. этот метод холста TurtleScreen доступен как глобальная функция только под именем turtle.resetscreen() . Глобальная функция turtle.reset() отличается от метода объекта TurtleScreen.reset() .

turtle.screensize(canvwidth=None, canvheight=None, bg=None) :

Метод turtle.screensize() возвращает текущее значение (ширина холста, высота холста), если аргументы не указаны. В противном случае изменяет размер холста.

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

  • canvwidth : положительное целое число, новая ширина холста в пикселях.
  • canvheight : положительное целое число, новая высота холста в пикселях.
  • bg : новый цвет фона, строка означающая цвет (например ‘blue’ ) или кортеж RGB (например (255, 255, 255) ).
>>> import turtle >>> screen = turtle.Screen() >>> screen.screensize() # (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() # (2000, 1500) 

Например, можно вычислить «сбежавшее перо» за пределы холста 😉

turtle.setworldcoordinates(llx, lly, urx, ury) :

Метод turtle.setworldcoordinates() настраивает пользовательскую систему координат и при необходимости переключается в режим ‘word’ .

Этот метод выполняет screen.reset() . Если режим режим ‘word’ уже активен, то все чертежи перерисовываются в соответствии с новыми координатами.

  • llx : число, координата x левого нижнего угла холста.
  • lly : число, координата y нижнего левого угла холста.
  • urx : число, координата x правого верхнего угла холста.
  • ury : число, координата y верхнего правого угла холста.

**ВНИМАНИЕ//: в пользовательских системах координат углы могут искажаться.

>>> import turtle >>> screen = turtle.Screen() >>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> pen = turtle.Turtle() >>> for _ in range(72): . pen.left(10) . >>> for _ in range(8): . # правильный восьмиугольник . pen.left(45) . pen.fd(2) 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Рисование/передвижение пера по холсту, модуль turtle
  • Поднять/опустить перо при движении в модуле turtle Python
  • Скрыть/показать перо на холсте в модуле turtle Python
  • Толщина пера и его форма, модуль turtle
  • Цвет пера/карандаша и цвет заливки в модуле turtle Python
  • Смена позиции пера на холсте в модуле turtle Python
  • Сведения о позиции пера на холсте в модуле turtle
  • Круг, многоугольник, точка в модуле turtle Python
  • Копия формы пера, модуль turtle Python
  • Очистка рисунка активного пера в модуле turtle Python
  • Функция write() модуля turtle, вывод текста на холсте
  • События мыши для пера в модуле turtle
  • События клавиатуры и мыши для холста в модуле turtle Python
  • Вызвать диалоговое окно в модуле turtle
  • Управление холстом/экраном в модуля turtle
  • Управление анимацией пера в модуля turtle Python
  • Специальные методы пера модуля turtle
  • Настройки и специальные методы холста модуля turtle

Как сделать фон в python

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

  • 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. Внешний вид активного (вверху) и неактивного (внизу) окна

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

Tkinter фоновое изображение окна

введите сюда описание изображения

Вариант добавления фоновой картинки через Canvas. Кнопку размещаем с помощью метода create_window . Для создания текста с прозрачным фоном вместо Label используем create_text .

import tkinter as tk from PIL import ImageTk, Image path = 'cat.jpg' root = tk.Tk() # Загружаем изображение и пропорционально изменяем размер так, # чтобы ширина была 500px. # Если изменение размера не нужно, оставьте только строки # image = Image.open(path) # и # image = ImageTk.PhotoImage(image) image = Image.open(path) width = 500 ratio = (width / float(image.size[0])) height = int((float(image.size[1]) * float(ratio))) image = image.resize((width, height), Image.ANTIALIAS) image = ImageTk.PhotoImage(image) canvas = tk.Canvas(root, width=width, height=height) canvas.pack(side="top", fill="both", expand="no") canvas.create_image(0, 0, anchor="nw", image=image) # Создаем кнопку и размещяем ее в "окне" ("контейнере") на Canvas button = tk.Button(root, text='Quit', command=root.quit) canvas.create_window((250, 250), anchor="nw", window=button) # Создаем текст через create_text, в отличие от Label у него будет прозрачный фон canvas.create_text(100, 100, text="Cat", fill="Yellow", font="Verdana 14") root.mainloop() 

Как сделать фон в python

Ряд виджетов в 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 и с помощью форматирования строки переводит значения кортежа в шестнадцатеричный код

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

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