Форум сайта python.su
0
Добрый день, подскажите, пожалуйста, как вставить изображение с прозрачностью в QT, что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
Или то же самое, черно-белое изображение. Нажал на черный цвет - print 1, нажал на белый - print 2
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Заранее благодарю
Офлайн
23
napuznikа можно поинтересоваться как будет использована эта возможность?
что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
Офлайн
0
Vrabey, спасибо за участие
napuznikИменно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Офлайн
23
napuznikто что я посоветую скорее всего - велосипед, но я бы вывел три изображения (три конуса) на прозрачном фоне, с помощью
Именно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой
QGraphicsPixmapItem
mousePressEvent
Отредактировано vrabey (Март 20, 2014 11:53:37)
Офлайн
0
Vrabey, спасибо, именно так и хотел сделать изначально
Нашел способ с помощью модуля PIL
Каждая кнопка в изображении имеет свой цвет. При нажатии модуль определяет цвет пикселя. На основании этого срабатывает нужная функция
Можно взять два изображения - одно, которое видит пользователь, другое помечено разными цветами
Таким образом можно в фотошопе быстро нарисовать и расставить любое количество кнопок произвольной формы
Офлайн
23
napuznikа можешь пример показать?
При нажатии модуль определяет цвет пикселя
Офлайн
0
vrabey, запросто
FW = win32gui.ForegroundWindow() #узнать окно на переднем плане DC = win32gui.GetDC (FW) #системная муть, которую потом нужно освободить из оперативки pixel = win32gui.GetPixel (DC (FW), 'координата x', 'координата y') #узнать цвет пикселя
pixel = ctypes.windll.GetPixel (DC (FW), 'координата x', 'координата y') #узнать цвет пикселя
from PIL import Image img = Image.open ('c:/изображение.tif') #открыть изображение rgb_img = img.convert ('RGB') #конвертировать в rgb r, g, b = rgb_img.getpixel (('координата x', 'координата y')) #узнать цвет пикселя rgb
Отредактировано napuznik (Март 21, 2014 14:27:52)
Офлайн
23
napuznik
спасибо
Офлайн