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

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

  • автор:

Как поменять фон окна?

Есть основная программа, при нажатии на кнопку открывается вот это окно в данными, как поменять цвет окна и букв?

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

Как поменять фон виджета?
Доброго времени суток, есть задача изменить фоновый цвет виджета в kivy На данный момент есть.

Игра змейка (как поменять фон)
Как поставить изображение на фон в данном коде: from tkinter import * import random #.

Tkinter не создаются фреймы, не меняется фон окна
from tkinter import * window = Tk() window.configure(bg =’Green’) window.title(‘My clicked’) .

Нужно сделать черный задний фон для окна
Как в этом коде сделать так, чтобы задний фон окна был черный? Цвет цифр я изменю потом сам. from.

Как сделать бесконечный фон, чтобы при переходе в правый или левый угол оставался тот же фон?
Как сделать бесконечный фон, чтобы при переходе в правый или левый угол оставался тот же фон?:(

1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305

1 2 3 4 5 6 7 8 9 10 11 12 13
from tkinter import * master = Tk() def buttonrelease(click): label=Label(frame, text="Welcome", fg="Blue") label.pack(side=TOP) frame = Frame(master, background="blue", width=200, height=200) frame.bind("", buttonrelease) frame.pack() master.mainloop()

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

Не могу поменять фон окна, когда нажимаю на кнопку субменю
Может кто-нибудь сталкивался с проблемой такой. Я хочу, чтобы когда заходишь в file -> change.

Прозрачный фон иконки и фон диалогового окна
Делаю всё в VS 2010, mfc! 1)Как поставить вместо стандартного фона диалогового окна, свой фон.

Как задать фон окна
Здравствуйте имею вот такой класс который рисует линию public class Field extends JComponent < .

Как задать фон окна JFrame
Как задать фон окна JFrame package окно.входа.в.систему; import java.awt.Color; import.

Как сделать фон программы в Tkinter ?

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

Остальные ответы

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Как поставить фоновое изображение на приложение — wxPython #4

Я получаю очень много электронных писем от людей, изучающих Python и wxPython. В одном из них меня попросили рассказать, как создать интерфейс, в котором фоновое изображение на панели будет размещено под кнопками с помощью Tkinter или wxPython. Сначала я проверил возможно ли это в Tkinter и выяснил, что виджет PhotoImage поддерживает только два формата: gif и pgm (по крайней мере пока я не установил Python Imaging Library). Поэтому, я решил дать wxPython шанс. И вот, что у меня получилось.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Плохой пример

Погуглив немного, я нашёл способ в одном из постов на форуме. Он показался мне вполне рабочим. Я воспроизведу для вас один из вариантов его использования ниже:

# Создаём фоновое изображение на панели wxPython
# И делаем так, чтобы кнопки отображались поверх него
class Panel1 ( wx . Panel ) :
A subclass of wx.Panel
def __init__ ( self , parent , id ) :
wx . Panel . __init__ ( self , parent , id )
# Выберите изображение, которое хотите разместить
# Вы можете загружать .jpg .png .bmp или
image_file = ‘roses.jpg’
bmp1 = wx . Image (
image_file ,
wx . BITMAP_TYPE _ ANY
) . ConvertToBitmap ( )
# Левый верхний угол изображения закрепляется на панели
# координаты (0, 0)
self . my_bitmap = wx . StaticBitmap (
self , — 1 , bmp1 , ( 0 , 0 ) )
# отображаем несколько деталей относительно изображения
str1 = «%s %dx%d» % (
image_file , bmp1 . GetWidth ( ) , bmp1 . GetHeight ( )
parent . SetTitle ( str1 )
except IOError :
print ( «Image file %s not found» % image_file )
raise SystemExit
if __name__ == «__main__» :
app = wx . App ( False )
my_frame = wx . Frame (
None , — 1 , «An image on a panel» ,
size = ( 350 , 400 )
panel = Panel1 ( my_frame , — 1 )
my_frame . Show ( True )
app . MainLoop ( )

Первой моей мыслью, когда я увидел это было: «Это наверняка будет выглядеть плохо». Почему я так решил?

Что же, парень, который запостил это использовал wx.StaticBitmap в качестве родителя для кнопки. Виджет StaticBitmap НЕ является контейнером, как тот же виджет Panel или Frame, поэтом я решил, его использование не будет хорошей идеей.

Я спросил Роберта Дана используя IRC канал #wxPython, о том, что он думает по поводу этой ситуации. Он сказал, что, если бы я сделал так, как показано на примере выше, у меня скорей всего появились бы проблемы со смещением и прочим, и порекомендовал мне использовать EVT_ERASE_BACKGROUND с элементами простого рисования. Учитывая то, что Роберт Дан создал wxPython, я последовал его совету и отказался от этого прошлого варианта.

Примечание: Когда я запустил этот код на Windows 7 с помощью wxPython Phoenix, у меня были жёсткие проблемы с тем, чтобы нарисовать виджет, а также с тем, чтобы отменить этот процесс. Так что используйте данный метод на свой страх и риск!

Финальное решение

Следуя указаниям Роберта Дана, я дополнил этот код:

class MainPanel ( wx . Panel ) :
def __init__ ( self , parent ) :
wx . Panel . __init__ ( self , parent = parent )
self . frame = parent
sizer = wx . BoxSizer ( wx . VERTICAL )
hSizer = wx . BoxSizer ( wx . HORIZONTAL )
for num in range ( 4 ) :
label = «Button %s» % num
btn = wx . Button ( self , label = label )
sizer . Add ( btn , 0 , wx . ALL , 5 )
hSizer . Add ( ( 1 , 1 ) , 1 , wx . EXPAND )
hSizer . Add ( sizer , 0 , wx . TOP , 100 )
hSizer . Add ( ( 1 , 1 ) , 0 , wx . ALL , 75 )
self . SetSizer ( hSizer )
self . Bind ( wx . EVT_ERASE_BACKGROUND , self . OnEraseBackground )
def OnEraseBackground ( self , evt ) :
Добавляем фоновое изображение.
dc = evt . GetDC ( )
dc = wx . ClientDC ( self )
rect = self . GetUpdateRegion ( ) . GetBox ( )
dc . SetClippingRect ( rect )
bmp = wx . Bitmap ( «big_cat.jpg» )
dc . DrawBitmap ( bmp , 0 , 0 )
class MainFrame ( wx . Frame ) :
def __init__ ( self ) :
wx . Frame . __init__ ( self , None , size = ( 600 , 450 ) )
panel = MainPanel ( self )
self . Center ( )
class Main ( wx . App ) :
def __init__ ( self , redirect = False , filename = None ) :
wx . App . __init__ ( self , redirect , filename )
dlg = MainFrame ( )
if __name__ == «__main__» :
app . MainLoop ( )

Вот пример скриншота того, как я сделал фоновым изображением фото большого кота, сделанное мной прошлым летом.

Как поставить фоновое изображение на приложение - wxPython #4

Главный фрагмент кода, на который стоит обратить внимание:

def OnEraseBackground ( self , evt ) :
Добавляем фоновое изображение.
dc = evt . GetDC ( )
dc = wx . ClientDC ( self )
rect = self . GetUpdateRegion ( ) . GetBox ( )
dc . SetClippingRect ( rect )
bmp = wx . Bitmap ( «big_cat.jpg» )
dc . DrawBitmap ( bmp , 0 , 0 )

Я копировал его из демо-версии ColourDB.py, которое доступно в демо-версии wxPython и слегка дополнил, чтобы он работал в моём приложении. Проще говоря, вы биндите панельEVT_ERASE_BACKGROUND и в этом хендлере, вы захватываете контекст устройства (DC), который в данном случае является панелью (я так думаю). Я называю это методом Clear, так как в моём настоящем приложении я использовал изображение с применением прозрачности, таким образом позволяя фону проступать.

Очистив его, я избавился от подтёков. Как бы то ни было, проверяем, существует ли DC или он пуст (так как я не уверен в этом до конца), и, если же нет – обновляет область (или так называемую «грязную зону» — часть изображения, которая пропадает после того, как на окно приложения накладывается другое). Затем я захватил своё изображение и использовал DrawBitmap, чтобы применить его в качестве фона. Это выглядит забавно, и я сам до конца не понимаю, что происходит, но это работает.

Не стесняйтесь попробовать оба и выяснить какой именно метод подходит именно вам. Он похож на метод Робина Дана, в котором он использует DC, но не тот же его тип, который использовал я.

Итоги

Теперь вы получили все необходимые знания для того, чтобы добавить фоновое изображение на панель приложения. Я замечаю, что люди постоянно спрашивают о том, как это сделать, поэтому считаю данную тему очень важной. Вы можете использовать эти знания для создания Splash Screen. Несмотря ни на что, поиграйте с этим кодом сами, вдруг вы найдёте способ получше.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

Управление холстом/экраном в модуля 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

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

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