Как поменять фон окна?
Есть основная программа, при нажатии на кнопку открывается вот это окно в данными, как поменять цвет окна и букв?
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 ( )
Вот пример скриншота того, как я сделал фоновым изображением фото большого кота, сделанное мной прошлым летом.
Главный фрагмент кода, на который стоит обратить внимание:
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