我正在编写一个可以在屏幕上显示任意系统信息的脚本。为此,我一直在尝试使用pyosd
模块。
考虑以下三行:
import pyosd
p = pyosd.osd()
p.display("ASKUBUNTU")
这在 Python 2.7 解释器中运行正常,但是从脚本运行时失败 - 没有抛出异常,但也没有显示任何内容。我该如何解决此问题?
我愿意接受其他建议,但这pynotify
对我来说也行不通,因为它发出的通知不能放在屏幕的任意位置。还要注意,这gnome-osd-client
也是一个有用的工具,但我需要一个独立的脚本,而不是使用外部应用程序。该脚本将针对其他用户,我不希望他们下载他们不需要的额外软件包
答案1
常见问题解答
为什么我可以交互地显示文本,但不能在脚本中显示?
文本显示在不同的线程中,因此您需要让程序运行足够长的时间才能看到文本。通常这意味着在程序末尾添加以下函数调用:
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 似乎删除了以前版本中使用的许多字体。安装 x11 字体并sudo apt-get install xfonts-75dpi
重新启动后,代码可以使用在中指定的默认字体pydoc pyosd
:
default_font = '-*-helvetica-medium-r-normal-*-*-360-*-*-p-*-*-*'