Я разрабатываю небольшое приложение для домашнего использования в Python. Он должен действовать как заставка слайд-шоу, но также и как примитивный менеджер изображений. У меня есть аспекты слайд-шоу и графического менеджера (я использую Tkinter), но я еще не реализовал бит скринсейвера. Итак, запуск приложения из командной строки прекрасен.
Я запускаю Ubuntu, и поскольку мне нужно, чтобы приложение могло принимать ввод с клавиатуры, я не думаю, что могу использовать инфраструктуру xscreensaver/gnome-screensaver, поскольку она захватывает все и отображает диалоговое окно входа. Мне бы очень хотелось, чтобы меня доказали неправильно (и было бы неплохо вернуться к xscreensaver после стольких лет:)).
Решением, которое я имею в виду, является использование PyXSS, чтобы обнаружить, когда пользователь простаивает и сам управляет битом заставки. Но было бы идеально найти другое, независимое от платформы решение, так как я хотел бы поделиться этой программой с некоторыми моими друзьями, использующими Windows.
На мои вопросы:
Могу ли я использовать xscreensaver каким-то образом для запуска моей программы, но избегайте использования xscreensaver's управление клавиатурой?
Существуют ли независимые от платформы альтернативы PyXSS?
Как я собираюсь достичь такая же функциональность в Windows?
Для 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
К сожалению, то, что написано, не все правильно, поэтому одним словом:
if sys.argv[1][:2]=='/c':
работает хорошо, например.Ввод пользователя: Работа с клавиатурными штрихами очень проста, потому что он не будет автоматически закрываться при перемещении мыши или событиях клавиатуры, но вам придется реализовать эти методы самостоятельно! Поэтому не забудьте написать свою функцию "on_mouse_event_close_program"!
Ummm, ну там pyhack, который позволяет вам использовать xscreensaver, который доступен для Mac и Linux. Не уверен в модуле pyhack, но xscreensaverhack позволяет захватывать события клавиатуры и мыши.
Я слышал, что может быть библиотека python для программирования заставки Windows. Даже если этого не происходит, вы всегда можете использовать win32api, который поставляется с пакетом python win32. Учебники в Интернете расскажут вам, какие функции api вызывают для создания скринсейверов. Не уверен в использовании pyopengl или что-то в этом роде....