Найти - Пользователи
Полная версия: Нажатие на изображение или кнопка нестандартной формы
Начало » Python для новичков » Нажатие на изображение или кнопка нестандартной формы
1
napuznik
Добрый день, подскажите, пожалуйста, как вставить изображение с прозрачностью в QT, что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
Или то же самое, черно-белое изображение. Нажал на черный цвет - print 1, нажал на белый - print 2
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Заранее благодарю
vrabey
napuznik
что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
а можно поинтересоваться как будет использована эта возможность?
napuznik
Vrabey, спасибо за участие
napuznik
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Именно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой
vrabey
napuznik
Именно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой
то что я посоветую скорее всего - велосипед, но я бы вывел три изображения (три конуса) на прозрачном фоне, с помощью
QGraphicsPixmapItem
,
расположил бы их рядом, что бы получился знак мерса
и для каждого элемента переопределил бы
mousePressEvent
где и вызывал бы нужные методы
А можно ещё нарисовать одну кнопку или label разделённую на три части и в зависимости от координат курсора,
(и зная координаты каждого конуса)
при нажатии на кнопку мыши, вызывать нужный метод
napuznik
Vrabey, спасибо, именно так и хотел сделать изначально
Нашел способ с помощью модуля PIL
Каждая кнопка в изображении имеет свой цвет. При нажатии модуль определяет цвет пикселя. На основании этого срабатывает нужная функция
Можно взять два изображения - одно, которое видит пользователь, другое помечено разными цветами
Таким образом можно в фотошопе быстро нарисовать и расставить любое количество кнопок произвольной формы
vrabey
napuznik
При нажатии модуль определяет цвет пикселя
а можешь пример показать?
napuznik
vrabey, запросто

FW = win32gui.ForegroundWindow()  #узнать окно на переднем плане
DC = win32gui.GetDC (FW)  #системная муть, которую потом нужно освободить из оперативки
pixel = win32gui.GetPixel (DC (FW), 'координата x', 'координата y')  #узнать цвет пикселя

или:
pixel = ctypes.windll.GetPixel (DC (FW), 'координата x', 'координата y')  #узнать цвет пикселя

или модуль pillow (альтернатива PIL):
from PIL import Image
img = Image.open ('c:/изображение.tif')  #открыть изображение
rgb_img = img.convert ('RGB')  #конвертировать в rgb
r, g, b = rgb_img.getpixel (('координата x', 'координата y'))  #узнать цвет пикселя rgb
vrabey
napuznik
спасибо
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