簡體   English   中英

如何在Ubuntu(最好是Windows)中啟動需要鍵盤輸入的Python屏幕保護程序?

[英]How do I start a Python screensaver that takes keyboard input in Ubuntu (and preferably Windows)?

我正在開發一個供Python使用的小型應用程序。 它應該充當幻燈片屏幕保護程序,但也可以充當原始圖像管理器。 我已經介紹了幻燈片放映和圖像管理器方面(我正在使用Tkinter),但是我還沒有實現屏幕保護程序。 因此,從命令行啟動應用程序可以正常工作。

我正在運行Ubuntu,並且由於我需要該應用程序才能接受鍵盤輸入,所以我認為我不能使用xscreensaver / gnome-screensaver框架,因為它可以捕獲所有內容並顯示登錄對話框。 我很樂意在這里被證明是錯誤的(這么多年后返回xscreensaver會很好:))。

我想到的解決方案是使用PyXSS來檢測用戶何時閑置並親自管理屏幕保護程序。 但是,找到另一個獨立於平台的解決方案是理想的,因為我想與一些使用Windows的朋友共享此程序。

接下來是我的問題:

  1. 我可以通過某種方式使用xscreensaver來啟動程序,但可以避免xscreensaver的鍵盤操作嗎?

  2. 是否有PyXSS的平台無關替代品?

  3. 我將如何在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文件。 如果您無法在PC上找到它,則只需使用Google即可找到它!

命令行操作員:根據發生的事情(預覽,設置等),有幾個命令行操作員會移交。 您將在此處找到列表: http : //www.wikihow.com/Convert-an-Executable-File-Into-a-Screensaver

可悲的是,那里寫的並不是全部正確,因此簡而言之:

  • / s/ S ...當屏幕保護程序啟動時(預覽時其中之一)
  • / c:# ...按下配置按鈕時。 if sys.argv[1][:2]=='/c':最好使用前兩個字符if sys.argv[1][:2]=='/c':例如,效果很好。
  • / p# ...被多次調用(關閉配置時或預覽后等),每次都返回到常規屏幕保護程序設置。 我只是將其與其他任何可能性一起丟棄(/ s / S或/ c:#除外)。 工作正常!

用戶輸入:處理鍵盤筆觸非常簡單,因為它不會在鼠標移動或鍵盤事件時自動退出,但是您必須自己實現這些方法! 因此,不要忘記編寫您的“ on_mouse_event_close_program”函數!

嗯,還有pyhack,可讓您使用適用於Mac和Linux的xscreensaver。 不確定pyhack模塊,但是xscreensaverhack允許您捕獲鍵盤和鼠標事件。

我聽說可能有用於Windows屏幕保護程序編程的python庫。 即使沒有,您也可以始終使用win32 python軟件包隨附的win32api。 Internet上的教程將告訴您要調用屏幕保護程序的api函數。 不確定是否使用pyopengl或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM