我正在为自动键编写脚本,有一次我需要自动键来关闭活动窗口,但找不到如何执行此操作。
我尝试让 autokey 按下autokey 中的alt+f4组合键,但这不起作用,因为 autokey显然不允许访问系统范围的键盘快捷键。因此我不知道如何关闭窗户。
(我正在配置 Quod Libet 以使其更适合我个人使用,并尝试通过使用一个简单的 + 激活脚本替换关闭“编辑标签”窗口 > 选择下一个音乐文件 > 打开一个新的“编辑标签”窗口的组合来简化shift标签right编辑过程。)
有任何想法吗?
答案1
不知道这是否适用于任何窗口,但keyboard.send_keys("<ctrl>+w")
使用 Quod Libet 给了我想要的结果。
答案2
import subprocess
p2 = subprocess.Popen("killall main") # main its a example
适用于我和我使用操作系统 Kubuntu 20.04
然后使用您喜欢的任何热键
答案3
由于应用程序的行为可能大不相同,关闭应用程序窗口可能会产生许多不同的后果,甚至可能导致应用程序终止。因此,最好将每个应用程序作为单独的案例来处理。
如果您无论如何都想通用地执行此操作,则不能依赖任何快捷方式来完成它。
以下是一些可行的策略:
最简单的方法可能是搜索窗口并通过调用
xdotool
(使用subprocess()
脚本中的调用)命令链将其关闭。这里的技巧是确保窗口的标题足够独特,以确保搜索返回正确的窗口标识符。如果您知道稍后要关闭某个特定窗口,请
xdotool
在首次打开该窗口时使用它来检索其窗口标识符,这样更容易找到。将此窗口标识符保存在文件或 AutoKey 保存的变量中,稍后使用它来告诉xdotool
要关闭哪个窗口。让 AutoKey 找到并单击x关闭窗口图标(通常位于窗口的右上角)。
这是可以做到的,但是有点棘手。
首先,您必须找到x。这里的挑战是,您的屏幕上很可能会出现多个 ,因此单击正确的 非常重要。对于浮动窗口等,它可能并不总是位于相同的绝对屏幕坐标上。
最好的方法是直接使用
visgrep
Xautomation 包中的 (通过subprocess.check()
AutoKey 脚本中的调用)来搜索正确的窗口,然后在x
该窗口内搜索 。如果成功,它将返回正确的绝对屏幕坐标,然后您可以使用从回复字符串解析后返回的坐标x单击它。mouse.click_absolute(xcoord, ycoord, 1)
visgrep()
visgrep
使用 Xautomation 涉及提前准备要搜索的图像以及一些超出此答案范围的其他工作。
AutoKey 通过 API 调用与 Xautomation 接口,但它目前不支持嵌套图像搜索功能,因此我们的 API 调用将找到所有 s x,但您必须编写自己的解决方案来确定哪一个是正确的x。
由于这不是一个非常简单的问题,也不是一个复制粘贴的解决方案,如果您需要帮助实现它,请发帖吉特。