Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 6, 2010 13:26:38

MaoDzeDun
От:
Зарегистрирован: 2009-09-20
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Здравствуйте!
Возникла довольно нестандартная проблема, над которой бьюсь второй день.
Есть машина на линухе, написал софтину на PyQT, предполагая, что софтина будет работать и управляться при помощи тачскрина.
Есть в софтине много QPushButton-ов. Когда управление происходит мышкой, то все ОК - я мышкой подвожу курсор к QPushButton-у и кликаю один раз левой кнопкой мышки, что приводит к эмиту сигнала clicked().
В случае же с тачскрином, чтобы нажать на кнопку нужно дважды клацать по самому тачскрину в одном и том же месте, т.к. софтина или линух воспринимает первый клик по тачскрину как перевод курсора на кнопку и только второй клик эмитит сигнал clicked(), т.е. в общем то поведение правильное, но хочется как-то сделать, чтобы первый клик по тачскрину не только переводил курсор, но и эмитил сигнал clicked()

Подскажите, пожалуйста, братцы, в какую сторону курить?

Огромное спасибо заранее!



Офлайн

#2 Фев. 6, 2010 14:14:36

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQT и тачскрин

А в других приложениях работает также? Первое впечатление: драйвер самого тач-скрина кривой.



Офлайн

#3 Фев. 6, 2010 14:18:13

MaoDzeDun
От:
Зарегистрирован: 2009-09-20
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Здравствуйте
Да, работает также и, да, кривой - полностью согласен
сейчас конечно паралельно ищу решение в самом линуксе, но буду рад помощи и со стороны pyqt



Офлайн

#4 Фев. 6, 2010 17:29:05

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Для QLabel есть сигнал linkHovered, но для кнопок ничего подобного нету. Можно попробовать поиграться с QWidget.enterEvent или чем-то похожим. Посмотрите документацию на QWidget и доступные события, кроме сигналов.



Офлайн

#5 Фев. 6, 2010 17:37:41

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Попробуй использовать tabletEvent. Или на крайняк enterEvent, чтобы виджет реагировал при наведении курсора, это правда хак, и есть в нем смысл только если софтина будет использоваться исключительно с тачскрином. Но лучше попытаться настроить драйвер, если есть такая возможность.



Отредактировано (Фев. 6, 2010 17:38:38)

Офлайн

#6 Фев. 6, 2010 17:49:52

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PyQT и тачскрин

pasaranax
enterEvent
Угу… А если я захочу два раза на одну и ту же кнопку нажать? И что будет, если после нажатия отрисуется другой диалог и какая-нить кнопка окажется под курсором?
Вывод: долбить дрова и только дрова. Посмотри в настройках xorg, может что-нить есть.

Добавленно:
Мне пришёл в голову такой костыль: отлавливать движение мыши над кнопкой. При попытке нажать второй раз, пользователь врядли попадёт на тот же пиксель… Но это тоже совсем криво…



Отредактировано (Фев. 6, 2010 17:52:59)

Офлайн

#7 Фев. 6, 2010 18:32:28

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

можно не enterEvent а focusInEvent



Офлайн

#8 Фев. 8, 2010 00:12:25

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Переопределить QWidget::focusInEvent пробовали?



Офлайн

#9 Фев. 8, 2010 12:46:46

MaoDzeDun
От:
Зарегистрирован: 2009-09-20
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

Господа, спасибо всем искренне за помощь!
Решил все-таки добить сами дрова тачскрина, т.к. хаками не хочется.
Как закончу - обязательно сообщу.
Еще раз спасибо!



Офлайн

#10 Фев. 13, 2010 14:28:20

MaoDzeDun
От:
Зарегистрирован: 2009-09-20
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT и тачскрин

еще раз всем огромное спасибо за помощь
в итоге последовал здравым советам и начал устранять первопричину проблемы - тачскрин
немного инфы. вдруг кому-то пригодится
тачскрин славной тайванькой компании aTouch, сделан на логике не менее славной компании eGalax
в комплекте и на сайте были драйвера EETI, которые, собственно, и создавали глюк
много и вдумчиво гуглил и нагуглил иксовый модуль xorg-xserver-input-evtouch (http://conan.de/touchscreen/evtouch.html), который умеет работать с eGalax-ами
минуя родные дрова EETI, в конфиге иксов добавил секцию с использованием драйверов evtouch, немного помучился с калибровкой и все чудно заработало
еще раз спасибо, братцы



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version