Уведомления

Группа в Telegram: @pythonsu

#1 Март 19, 2014 20:12:38

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

Добрый день, подскажите, пожалуйста, как вставить изображение с прозрачностью в QT, что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
Или то же самое, черно-белое изображение. Нажал на черный цвет - print 1, нажал на белый - print 2
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Заранее благодарю

Офлайн

#2 Март 19, 2014 22:39:45

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

napuznik
что бы нажатие на область прозрачности выполняло, например, print 1, нажатие на непрозрачную область изображения -print 2
а можно поинтересоваться как будет использована эта возможность?

Офлайн

#3 Март 20, 2014 03:47:01

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

Vrabey, спасибо за участие

napuznik
Пытаюсь сделать кнопку нестандартннй формы. Форму нарисовал в фотошопе, как научить Qt ее распознавать - не придумал
Именно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой

Офлайн

#4 Март 20, 2014 08:22:03

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

napuznik
Именно так и будет использоваться. Представьте, например, круг, поделенный на три равные части (как логотип мерседеса). Каждая часть должна быть кнопкой
то что я посоветую скорее всего - велосипед, но я бы вывел три изображения (три конуса) на прозрачном фоне, с помощью
QGraphicsPixmapItem
,
расположил бы их рядом, что бы получился знак мерса
и для каждого элемента переопределил бы
mousePressEvent
где и вызывал бы нужные методы
А можно ещё нарисовать одну кнопку или label разделённую на три части и в зависимости от координат курсора,
(и зная координаты каждого конуса)
при нажатии на кнопку мыши, вызывать нужный метод

Отредактировано vrabey (Март 20, 2014 11:53:37)

Офлайн

#5 Март 21, 2014 11:49:49

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

Vrabey, спасибо, именно так и хотел сделать изначально
Нашел способ с помощью модуля PIL
Каждая кнопка в изображении имеет свой цвет. При нажатии модуль определяет цвет пикселя. На основании этого срабатывает нужная функция
Можно взять два изображения - одно, которое видит пользователь, другое помечено разными цветами
Таким образом можно в фотошопе быстро нарисовать и расставить любое количество кнопок произвольной формы

Офлайн

#6 Март 21, 2014 13:29:25

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

napuznik
При нажатии модуль определяет цвет пикселя
а можешь пример показать?

Офлайн

#7 Март 21, 2014 14:27:02

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

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

Отредактировано napuznik (Март 21, 2014 14:27:52)

Офлайн

#8 Март 21, 2014 15:15:26

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Нажатие на изображение или кнопка нестандартной формы

napuznik
спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version