有没有一种方法可以直接告诉我的python程序将鼠标与os.system(“ import filename.png”)一起使用?

卢卡斯·格罗斯(LukasGroß)

我一直在尝试为arch编写一些屏幕截图脚本。它有效,但是问题是当我尝试在i3-config中为其分配键绑定时,它什么都不做。

首先,我尝试用bash完全编写它,但效果很好,但是我偶然遇到了同样的问题,因为它没有执行。因此,我已将输出重定向到日志文件以将其签出,并对此表示欢迎:

import: unable to grab mouse '': Datei oder Verzeichnis nicht gefunden @ error/xwindow.c/XSelectWindow/9306.
import: unable to read X window image '': Erfolg @ error/xwindow.c/XImportImage/4942.
import: unable to read X window image '': Erfolg @ error/xwindow.c/XImportImage/5049.
import:  `/home/lukas/Screenshot/20190419/scoot7.png' @ error/import.c/ImportImageCommand/1288.

翻译第一行:找不到文件或目录@错误[...]翻译Erfolg:成功

我尝试使用谷歌搜索,它并没有真正带给我任何东西,也没有真正找到类似于error / xwindow.c之类的路径。

这是我的代码:

#!/usr/bin/env python
import os, os.path
import datetime
import sys

d = datetime.datetime.today()
directory="/home/lukas/Screenshot/%s"%d.strftime('%Y%m%d')

if not os.path.exists(directory):
    os.mkdir(directory)

fileCount = 1
for file in os.listdir(directory):
    if file.endswith('.png'):
        fileCount+=1

filename = "%s/scr%d.png"%(directory,fileCount)
os.system("import %s"%filename)

这是我进入i3配置的条目:

bindsym $mod+Shift+F12          exec --no-startup-id scoot > /tmp/log.out 2>&1

预期的结果是,当我按下mod + shift + f12时,它将鼠标指针转换为“十字准线”,因此我可以选择一些内容并对其进行截图。实际结果是,如果我正常运行它,则可以工作,但是,如果我尝试使用Keyboard-Shortcut,则除了输出到我的日志文件外,它什么也不会做。

我几乎是编程和linux的新手,我不知道为什么它找不到我的鼠标,我想知道我是否可以明确告诉程序使用它,或者是否有其他方法可以这样做。

非常感谢。

Hugenotte

我写了一个bash脚本前阵子做的正是你正在尝试做的,使用很常见的实用工具ImageMagick的,你可以找到这里的拱门。

在这种情况下,如果您愿意采用这种替代方法:

#!/bin/bash

# take screenshot using import from imagemagick
# allows to select the area by dragging across a rectangle
# or to select entire window by clicking inside it

set -e

# the date and time will be used as the file name
time=$(date +"%F_%H:%M:%S")

# naming the urxvt window "screenshot" so that the i3 "no_focus" option gets applied to it
urxvt -title "screenshot" -e bash -c "import $HOME/Screenshot/$time.png"

然后,我在i3中使用它:

no_focus [title="screenshot"]
bindsym $mod+Shift+F12 layout tabbed; exec --no-startup-id bash my_script.sh

当然,您可能希望将日期格式更改为python中的日期格式。我喜欢抽空,以防我连续拍摄几个屏幕截图。而且,您必须替换urxvt为终端仿真器的名称,并且-title如果终端仿真器没有以此方式为Windows提供名称,则可能必须修改标志。

请注意,命名窗口很重要:花了我一些时间才弄清楚如何解决不命名窗口并no_focus在i3中使用该窗口的情况:

焦点将跳到屏幕捕获窗口,因此跳出了我要截图的窗口。您bash和python脚本所面临的问题可能与此有关。您必须强制i3将鼠标保持在旧窗口上,而不要跳到由脚本触发的屏幕捕获窗口(默认情况下,i3将专注于新创建的窗口)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章