Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Python gtk как узнать нажат ли сейчас контрол шифт или альт?  (Прочитано 1806 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Xepec

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Как узнать нажат ли сейчас контрол шифт или альт?

Оффлайн Xepec

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Точнее даже интересуе обработка ивентов Ctrl+Click, Shift+Click и Alt+Click.
Как это сделать?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
unsigned int state - маска кнопок (или клавиш), удерживаемых во время этого события (если таковые имеются). Эта поле - побитовое "ИЛИ" любого из следующих значений: Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. Первые пять значений ссылаются на кнопки мыши, которые нажимаются, остальные соответствуют различным специальным клавишам (Mod1 - обычно клавиша Alt или Meta).
Ну а с удавом борись сам. Сам себе злобный буратино раз выбрал этот инструмент.

Оффлайн Xepec

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Ухты, не знал! Спасибо!

Сейчас поборол таким способом: пишем два обработчика на key_press и key_release и потом храним состояние клавиши.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
мдя... какие же все-таки бывают извращенцы  :2funny:
событие click от крысы имеют поле в котором указывается какие нажаты кнопки на крысе И какие клавиши-модификаторы зажаты на клавиатуре

конечно удав может скрывать это поле, но я не думаю. так что все можно достать из одного события.

Оффлайн Xepec

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Поле это есть, просто я никак в доках его не мог найти. И в гугле никак не находилось, было несколько ссылок на Wxwidget и где-то описывался тот способ который я использовал и все.

ЗЫ интерессно а как можно посмотреть все поля и методы которые есть у объекта во время исполнения программы?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
ЗЫ интерессно а как можно посмотреть все поля и методы которые есть у объекта во время исполнения программы?

print dir(объект)
В Dive Into Python в самом начале приведена функция на основе dir, печатающая все красиво.

Глава 4.1, apihelper

def info(object, spacing=10, collapse=1):   
    """Print methods and doc strings.
   
    Takes module, class, list, dictionary, or string."""
    methodList = [method for method in dir(object) if callable(getattr(object, method))]
    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
    print "\n".join(["%s %s" %
                      (method.ljust(spacing),
                       processFunc(str(getattr(object, method).__doc__)))
                     for method in methodList])
« Последнее редактирование: 18 Декабря 2008, 18:44:04 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Xepec

  • Автор темы
  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Огромное спасибо, я  так без этого мучался!  :D

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Дыкть, рекомендую!
http://www.diveintopython.org
или
$aptitude show diveintopython
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.066 секунд. Запросов: 25.