如何以编程方式将 webkit PyQt 窗口作为墙纸放在桌面上?

Posted

技术标签:

【中文标题】如何以编程方式将 webkit PyQt 窗口作为墙纸放在桌面上?【英文标题】:How can I put a webkit PyQt window as wallpaper on my desktop programmatically? 【发布时间】:2012-06-13 21:03:24 【问题描述】:

我尝试将谷歌日历放在 webkit 窗口中作为墙纸。

python 工作脚本看起来像

#!/usr/bin/python2 -u
# -*- coding: iso8859-15 -*-

display_UI = True
email = "xxxx@gmail.com"
passwd = "xxxxxxxx"
useragent = "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"

import spynner

browser = spynner.Browser(
        debug_level=spynner.WARNING,
        user_agent = useragent
)

browser.create_webview(display_UI)
browser.webview.setWindowTitle('Gcalendar')
browser.webview.showMaximized()

browser.load("https://accounts.google.com/ServiceLogin?service=cl&passive=1209600&continue=https://www.google.com/calendar/render&followup=http://www.google.com/calendar&scc=1")
browser.fill("input[name=Email]", email)
browser.fill("input[name=Passwd]", passwd)
browser.click("input[name=signIn]")
browser.wait_load()
browser.load("https://www.google.com/calendar/render?pli=1")
browser.wait_load()

# vim:ts=4:sw=4

我现在想做的是,以编程方式将此窗口设置为墙纸:

跳过任务栏 跳过寻呼机 全屏(使用 spynner 模块完成) 如果我隐藏所有应用程序,窗口应该保持与任何壁纸一样。

我尝试了什么没有成功

应用程序名称的 kde 高级设置 xwinwrap

【问题讨论】:

在 kde 中你可以使用KWin Rules Window Attributes 将窗口保持在其他窗口下方 【参考方案1】:

您可以截取页面截图,将其保存在某处,然后启动更改背景的命令。

image = spynner.QImage(browser.webpage.viewportSize(), spynner.QImage.Format_ARGB32)
painter = spynner.QPainter(image)
browser.webpage.mainFrame().render(painter)
painter.end()
image.save("/path/to/img/gcscreen.png")

然后使用 subprocess 模块从终端调用更改壁纸的命令。谷歌搜索结果为this 用于 Gnome ubuntu。如果你愿意,我相信你也可以为 KDE 找到一个类似的。

【讨论】:

谢谢你,这很有趣,但不适合我尝试的,我想要一个 webkit 壁纸。这样,日历就可以编辑了。

以上是关于如何以编程方式将 webkit PyQt 窗口作为墙纸放在桌面上?的主要内容,如果未能解决你的问题,请参考以下文章

《PyQT5软件开发》第3章 PyQt5布局管理

如何以编程方式将窗口从全屏切换到正常模式?

如何以编程方式水平平铺某些窗口?

《PyQT5软件开发 - 基础篇》第3章 PyQt5布局管理

如何在不编码窗口状态的情况下以编程方式终止 NSApp?

如何以编程方式将 .xlam 插件(作为对象)添加到 vba?