【问题标题】:How to make my Program Display Always on top如何让我的程序始终显示在最前面
【发布时间】:2022-02-01 05:49:23
【问题描述】:

项目信息和问题

我使用 Pygame 模块 创建了一个 Python 程序,它在显示器上显示广告。 它在屏幕上显示广告但是一旦我启动不同的应用程序,如 kodi、vlc 或 chrome 等,它就会落后于这些应用程序。

问题是:如果这些应用程序在我的广告程序之后启动,则程序运行但在这些应用程序之后。

理想工作

  1. 程序启动
  2. 屏幕上显示的广告
  3. 推出其他应用程序
  4. 程序仍会在屏幕顶部显示广告。

系统信息

操作系统:Linux - Ubuntu 20

语言:Python

模块:Pygame、Pymovie、GTK3+

架构:amd64

桌面环境:OpenBOX

代码启动:使用 bash 脚本的 CLI 启动 python 广告程序。

广告截图示例

请帮忙! 谢谢。

【问题讨论】:

    标签: python linux ubuntu pygame


    【解决方案1】:

    看起来我能找到的最佳答案来自这个过时的网站 (https://www.mail-archive.com/pygtk@daa.com.au/msg01370.html) 他们说要使用下面的代码,它应该适用于所有操作系统......事情从来没有那么容易

    transient.set_transient_for(main_window)
    

    另外,我还有其他四个答案,哈哈

    取自 (How to keep a python window on top of all others (python 3.1))

    stackoverflow 用户 pyfunc 说对于 windows 你可以这样做

    import win32gui
    import win32con
    win32gui.SetWindowPos(hWnd, win32con.HWND_TOPMOST, 0,0,0,0,
    win32con.SWP_NOMOVE | win32con.SWP_NOSIZE)
    

    由于这只适用于 windows 我认为你应该尝试 python-tinker,我相信它适用于 linux

    root = Tk()
    root.wm_attributes("-topmost", 1)
    

    whatnick 还说你可以使用 PyGTK

    gtk.Window.set_keep_above
    

    参考:How to make python window run as "Always On Top"?

    如果这些对你有用,请告诉我,我会继续寻找更好的答案。

    【讨论】:

    • 嗨 @jacob-glik 感谢您为我提供答案,但似乎上述解决方案适用于 Windows 操作系统。 win32gui、win32con 和 tinker 的作用就像魅力一样。但我的问题是 Linux 操作系统。我无法在我的代码上使用gtk.Window.set_keep_abovetransient.set_transient_for(main_window)。我的意思是我不知道我必须将这一行放在我的代码中的什么位置,我也无法在网站上找到合适的文档。
    猜你喜欢
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多