Как запустить заставку Python, которая принимает ввод с клавиатуры в Ubuntu (и предпочтительно Windows)?

1

Я разрабатываю небольшое приложение для домашнего использования в Python. Он должен действовать как заставка слайд-шоу, но также и как примитивный менеджер изображений. У меня есть аспекты слайд-шоу и графического менеджера (я использую Tkinter), но я еще не реализовал бит скринсейвера. Итак, запуск приложения из командной строки прекрасен.

Я запускаю Ubuntu, и поскольку мне нужно, чтобы приложение могло принимать ввод с клавиатуры, я не думаю, что могу использовать инфраструктуру xscreensaver/gnome-screensaver, поскольку она захватывает все и отображает диалоговое окно входа. Мне бы очень хотелось, чтобы меня доказали неправильно (и было бы неплохо вернуться к xscreensaver после стольких лет:)).

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

На мои вопросы:

  • Могу ли я использовать xscreensaver каким-то образом для запуска моей программы, но избегайте использования xscreensaver's управление клавиатурой?

  • Существуют ли независимые от платформы альтернативы PyXSS?

  • Как я собираюсь достичь такая же функциональность в Windows?

Теги:
screensaver

2 ответа

3

Для Windows вы можете просто создать исполняемый файл (например, с py2exe) и переименовать его с .exe на .scr

Вы можете щелкнуть правой кнопкой мыши по этому файлу и выбрать "Установить" или просто скопировать его в свой (?) каталог Windows/System32, чтобы он отображался в списке заставки!

Одно из предположений: Я думаю, что было бы лучше создать только один исполняемый файл вместо обычной группы файлов (= зависимости).

Я использую эту конфигурацию настройки (для py2exe) для создания одного исполняемого файла:

from distutils.core import setup
import py2exe

includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
            'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
            'Tkconstants', 'Tkinter','MSVCP90.dll']
packages = []
dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                'tk84.dll']

setup(
    options = {"py2exe": {"compressed": 2,
                          "optimize": 2,
                          "includes": includes,
                          "excludes": excludes,
                          "packages": packages,
                          "dll_excludes": dll_excludes,
                          "bundle_files": 1,
                          "dist_dir": "dist",
                          "xref": False,
                          "skip_archive": False,
                          "ascii": False,
                          "custom_boot_script": '',
                         }
              },
    zipfile = None,
    windows=['main.py'] # <- the name of your code file
)

Изменить: Для его компиляции вам понадобится файл MSVCP90.dll в той же папке. Если вы не можете найти его на своем ПК, просто используйте Google, чтобы найти его!

Операторы командной строки: Операторы командной строки передаются в зависимости от того, что происходит (предварительный просмотр, настройки и т.д.). У вас будет список здесь: http://www.wikihow.com/Convert-an-Executable-File-Into-a-Screensaver

К сожалению, то, что написано, не все правильно, поэтому одним словом:

  • /s и /S... при запуске заставки (один из них при предварительном просмотре)
  • /c: #... при нажатии кнопки configure. Лучше всего использовать первые два символа if sys.argv[1][:2]=='/c': работает хорошо, например.
  • /p #... вызывается несколько раз (когда вы закрываете конфигурацию или после предварительного просмотра и т.д.), каждый раз он возвращается к общим настройкам заставки. Я просто отбрасываю это вместе с любыми другими возможностями (кроме/s/S или /c: #). Прекрасно работает!

Ввод пользователя: Работа с клавиатурными штрихами очень проста, потому что он не будет автоматически закрываться при перемещении мыши или событиях клавиатуры, но вам придется реализовать эти методы самостоятельно! Поэтому не забудьте написать свою функцию "on_mouse_event_close_program"!

2

Ummm, ну там pyhack, который позволяет вам использовать xscreensaver, который доступен для Mac и Linux. Не уверен в модуле pyhack, но xscreensaverhack позволяет захватывать события клавиатуры и мыши.

Я слышал, что может быть библиотека python для программирования заставки Windows. Даже если этого не происходит, вы всегда можете использовать win32api, который поставляется с пакетом python win32. Учебники в Интернете расскажут вам, какие функции api вызывают для создания скринсейверов. Не уверен в использовании pyopengl или что-то в этом роде....

  • 0
    Спасибо! Наконец-то ответ :) Посмотрю в пыхак!
  • 1
    Вот модуль заставки Python для Windows: homepage.hispeed.ch/py430/python/index.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню