• EveryLang — программа, которая может почти все

      EveryLang позволяет переводить любой текст, проверять орфографию, переключать раскладку в ручной и автоматической режиме, имеет индикатор раскладки в различных видах, работает с буфером обмена, использует шаблоны текстов, ведет дневник набираемого текста, конвертирует текст в различные варианты и включает в себя очень удобный инструмент SmartClick, для работы с текстом с помощью мыши.

      EveryLang позволит существенно увеличить скорость работы с текстом. Предоставит новые возможности экономии времени на рутинных процедурах.

      image
      Читать дальше →
    • EveryLang — переводим, проверяем орфографию, переключаем и показываем текущую раскладку клавиатуры

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

        Все эти возможности уже реализованы в других программах.

        Переводчики: Translateclient, QTranslate, Dicter и т.д.
        Проверка орфографии: Spell Checker, решения ОРФО, LanguageTool, возможно что-то есть еще.
        Переключение раскладки: Punto Switcher, Arum Switcher, Key Switcher и несколько небольших проектов энтузиастов.
        Индикатор текущего языка ввода: Aml Maple.

        У каждой из них есть свои особенности, плюсы и минусы, некоторые платные, некоторые глючные или просто неудобные.
        В общем, мне надоело держать весь этот зоопарк на своем компьютере, следить за их обновлением, настраивать, уживаться с их не всегда хорошим поведением.
        И решил я сделать велосипед для себя, чтобы было все и все это хорошо работало, не раздражало и радовало глаз.
        В итоге встречайте мой небольшой проект EveryLang.



        Читать дальше →
      • Вышел новый PyCharm 2.1 Early Access Preview

          Первого марта 2012 года JetBrains анонсировала выход новой превью версии замечательной IDE для Python PyCharm 2.1.

          Главное в новой версии это управление пакетами и окружением virtualenv напрямую из PyCharm.

          Основные изменения в новой версии:

          1. Удаленные интерпретаторы — полная интеграция с интерпретаторами Python, расположенными на удаленных хостах;

          image

          Читать дальше →
        • Потоки в wxPython

          • Translation
          При написании программ на Python, используя при этом графический интерфейс иногда приходится запускать различные долгие обработки каких либо данных, при этом в большинстве случаев будет блокироваться интерфейс и пользователь увидит программу замороженной. Чтобы этого избежать необходимо нашу задачу запустить в параллельном потоке или процессе. В данной статье мы рассмотрим, как это сделать в wxPython с помощью модуля Threading.

          Потокобезопасные методы wxPython


          В wxPython существуют три метода для работы с потоками. Если ими не пользоваться, то при обновлении интерфейса программы Python могут подвиснуть. Чтобы этого избежать, необходимо использовать потокобезопасные методы: wx.PostEvent, wx.CallAfter и wx.CallLater. По словам Robin Dunn (создатель wxPython) wx.CallAfter использует wx.PostEvent для отправки события на объект приложения. Приложение будет иметь обработчик этого события и будет реагировать на него соответственно заложенному алгоритму. На сколько я понимаю wx.CallLater вызывает wx.CallAfter с заданным параметром времени, чтобы он знал сколько ему ждать перед отправкой события.

          Robin Dunn также отметил, что Global Interpreter Lock (GIL) не допустит одновременного выполнения более одного потока, что может ограничить количество используемых ядер процессора. С другой стороны, он также сказал, что wxPython освобождается от GIL вызывая API функции библиотеки wx, поэтому другие потоки могут работать одновременно. Другими словами быстродействие может изменяться при использовании потоков на многоядерных машинах. Обсуждение этого вопроса может быть интересным и не понятным…
          Прим. перев. — для более полного знакомства с GIL прошу сюда.

          Наши три метода можно разделить на уровни абстракции, wx.CallLater находится на самом верху, далее идет wx.CallAfter, а wx.PostEvent находится на самом низком уровне. В следующих примерах вы увидите, как использовать wx.CallAfter и wx.PostEvent в программах WxPython.
          Читать дальше →