我需要直接在没有窗口的屏幕上写文本。文本需要显示在所有其他窗口和全屏应用程序之上,不应以任何方式单击或交互。
示例: 如示例所示,文本不需要有透明的背景。我可以在Windows7上使用Python2或3。
我试着用Tkinter制作一个独立的标签:
编辑:借助Christian Rapp改进
import Tkinter
label = Tkinter.Label(text='Text on the screen', font=('Times','30'), fg='black', bg='white')
label.master.overrideredirect(True)
label.master.geometry("+250+250")
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")
label.pack()
label.mainloop()
什么有效:
什么不:
我也有类似的需求,发现pygame库对我所寻找的东西做得非常好。我能够生成非常大的文本,更新非常快,没有闪烁。请参阅下面的主题(第一个代码“solution”就是它):
Simple way to display text on screen in Python?
我加快了速度,而且很快。也使字体更大,这并没有太大的影响速度。所有这些都在一块橙色的圆珠笔板上运行(20美元)。您可以从命令行w/o GUI(或从窗口桌面)启动它,在任何一种情况下,它都是全屏的,不会显示为“窗口”应用程序。
作为Python和Pygame的新手,我的假设是可以加载一个图像文件作为背景,然后将文本放在上面。
哦,我用Tkinter的例子也试过了,速度慢,闪烁,字体看起来不太“正确”。皮加梅显然是赢家。它被设计成在屏幕上快速播放,而不会“撕扯”,因为当图像更新时,游戏不需要闪烁。我很惊讶它不依赖OpenGL,因为它很快。我认为Orange Pi不支持OpenGL(对此无法给出明确的答案)。所以对于二维的东西,哇,pygame是令人印象深刻的。!
原来这里有两个完全不同的问题。要在窗口上显示文本,您需要创建一个未装饰的最上面的窗口,并为背景设置色度键。但是,当运行全屏应用程序(如游戏)时,这将不起作用。在全屏应用程序上显示文本的唯一可靠方法是使用Direct3D挂钩。
我还没有写一个Direct3D钩子的例子,但是我会给第一个问题两个不同的解决方案。
解决方案1:Tkinter+pywin32
在本例中,我使用Tkinter完成了大部分工作,并使用win32api防止文本阻止鼠标单击。如果win32api对您不可用,那么您只需删除该部分代码。
解决方案2:pywin32
这个例子通过pywin32完成了所有事情。这使得它更复杂,更不易携带,但功能更强大。我在整个代码中都包含了到Windows API相关部分的链接。
相关问题 更多 >
编程相关推荐