Найти - Пользователи
Полная версия: Прозрачность фона виджета в Canvas tkinter
Начало » Python для новичков » Прозрачность фона виджета в Canvas tkinter
1
Konstantin1984+
У меня возник вопрос. Как сделать прозрачный фон у объекта Canvas (в том числе у вставленной картинки). Ведь все виджеты, по сути, вставляются в прямоугольник, имеющий фоновый цвет. В итоге если я перемещаю объект по экрану и задеваю другой объект с отличным от фона прямоугольника цветом, то проявляется фон, а хотелось бы, чтобы его не было видно. Как это сделать?
4kpt_V
alpha=
(Windows, Mac) Controls window transparency. 0.0 means fully transparent, 1.0 means fully opaque. This isn’t supported on all systems; where not supported, Tkinter always uses 1.0. Note that in this release, this attribute must be given as “-alpha”.

Документация
Konstantin1984+
С данным материалом я знаком, но указанный параметр делает прозрачным окно и все, что в нем находится, а мне нужно сделать прозрачным фон для объекта, чтобы вне зависимости от того, с каким объектом он пересекается, или какого цвета холст, фон не был виден.
4kpt_V
Честно. Я не пойму о чем вы.
Konstantin1984+
Скажу по-другому, есть, к примеру, картинка, на которой изображен человечек, изображен он на каком-то фоне. Я вставляю картинку в Canvas tkinter (или в pygame), и если фон картинки не совпадает по цвету с холстом, то мы видим не только человечка, но и фон. Такая же ситуация с пересечением другого объекта: фон, даже если по цвету совпадает с холстом, пересекаясь с другим объектом, становится видимым (накладывается на объект). Мне нужно чтобы было видно только человечка при любых его перемещениях по холсту. Возможно, я много хочу, и это звучит нереально, но ведь как-то это делают, правда, возможно, что в Canvas это невозможно реализовать.
PEHDOM
Konstantin1984+
Я вставляю картинку в Canvas tkinter (или в pygame), и если фон картинки не совпадает по цвету с холстом, то мы видим не только человечка, но и фон
Вообщето есть такое понятие как альфа-канал, вот его и используют для задания прозрачности.
 from tkinter import Tk, Canvas
from PIL import Image, ImageTk
root = Tk()
image = Image.open('jerry.png')
tkimg = ImageTk.PhotoImage(image)
canvas = Canvas(root, height=600, width=600)
canvas.grid()
def stamp(event):
    canvas.create_image(event.x, event.y, image=tkimg)
canvas.bind('<ButtonPress-1>', stamp)
root.mainloop()



Konstantin1984+
Здорово! Уважаемый PEHDOM, если бы Вы мне объяснили еще, как такой фон делать (простой вариант), было бы совсем замечательно.
Konstantin1984+
Нашел, все очень просто, судя по всему, в любом графическом редакторе можно фон сделать прозрачным.
4kpt_V
Konstantin1984+
Нашел, все очень просто, судя по всему, в любом графическом редакторе можно фон сделать прозрачным.
Капец. Я вообще бы об этом никогда не подумал. Photoshop курс таки надо пройти. Про много чего интересного узнаете. От лямбд регулировок до тоновых кривых
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB