web-dev-qa-db-ja.com

pyosdはインタプリタで動作しますが、スクリプトでは動作しません

画面に任意のシステム情報を表示するスクリプトを作成しています。そのため、私はpyosdモジュールを使用しようとしています。

次の3行について考えてみます。

import pyosd
p = pyosd.osd()
p.display("ASKUBUNTU")

これはpython 2.7インタープリターで問題なく動作しますが、スクリプトから実行すると失敗します-例外はスローされませんが、何も表示されません。これをトラブルシューティングするにはどうすればよいですか?

私は別の提案を受け入れていますが、pynotifyも機能しません。通知が画面の任意の位置に配置できないためです。また、gnome-osd-clientも便利なツールですが、外部アプリケーションを使用するのではなく、スタンドアロンスクリプトが必要です。スクリプトは他のユーザーを対象としているので、不要な追加のパッケージをダウンロードさせたくない

2

http://ichi2.net/pyosd/ で述べたように

よくある質問

インタラクティブにテキストを表示できるのに、スクリプトでは表示できないのはなぜですか?

テキストは別のスレッドで表示されるため、テキストを表示するのに十分な時間プログラムを実行し続ける必要があります。通常、これはプログラムの最後に次の関数呼び出しを追加することを意味します。

my_pyosd_obj.wait_until_no_display()

したがって、解決策はこれを行うことでした:

#!/usr/bin/env python
import pyosd
p = pyosd.osd( )
p.display("HELLOOOOOOOOOOOOOOOOOOOOOOOOOO")
p.show()
p.wait_until_no_display()

16.04

16.04 LTSでは、以前のバージョンで使用されていたフォントの多くが削除されているようです。 Sudo apt-get install xfonts-75dpiでx11フォントをインストールして再起動すると、コードはpydoc pyosdで指定されているデフォルトのフォントで機能します。

default_font = '-*-helvetica-medium-r-normal-*-*-360-*-*-p-*-*-*'

enter image description here

1