【问题标题】:AutoHotKey calling Python code--sometimes works sometimes doesn'tAutoHotKey 调用 Python 代码——有时有效,有时无效
【发布时间】:2019-03-17 06:15:10
【问题描述】:

我正在尝试从 AHK 调用 Python 代码来处理我剪贴板上的 YouTube 脚本,删除这些时间戳,将它们融合回一个字符串,然后用新处理的字符串替换原始文本,以便我可以粘贴出来。

AHK 代码:

^x::

clipboard =   
Send, ^c

Run "directory\try.py"

Return

Python 代码(try.py):

import pyperclip 

content = pyperclip.paste()
lines = content.split('\r\n')

new_lines = []
for line in lines: 
    for i,x in enumerate(line):
        if x.isalpha():
            position = i 
            break 
    new_line = line[position:]
    new_lines.append(new_line)

# print('Preview', '\n', ' '.join(new_lines))
pyperclip.copy(' '.join(new_lines))

这个系统有时可以工作,但有时不能。有时,当它不起作用时,如果我回到 YouTube 页面并再次按 ctrl + x ,它就会起作用。我很确定问题出在 AHK 部分,因为我已经手动使用 Python 代码几个月了,没有任何错误。感谢任何人都可以提供帮助。

【问题讨论】:

    标签: python youtube autohotkey


    【解决方案1】:

    是的。 AHK 太快了。剪贴板的东西需要时间。一探究竟。这是怎么做的:

    ; Using ClipWait to improve script reliability:
    clipboard =  ; Start off empty to allow ClipWait to detect change
    Send, ^c
    ClipWait ; Wait for the clipboard to contain text.
    Run "directory\try.py"
    

    您甚至可能需要添加一些睡眠时间:

    ; Using ClipWait to improve script reliability:
    clipboard =  ; Start off empty to allow ClipWait to detect change
    Sleep, 50 ; milliseconds
    Send, ^c
    ClipWait ; Wait for the clipboard to contain text.
    Sleep, 150 ; milliseconds
    Run "directory\try.py"
    

    或者更好的是,尝试这样(使用OnClipboardChange 函数):

    OnClipboardChange("ClipChanged")
    return
    
    ^x::
        Send, ^c
    return
    
    ClipChanged(Type) {
        MsgBox "%Clipboard%"  ;  comment out if working well
        run "directory\try.py"
        ExitApp
    }
    

    您可以注释掉结尾的ExitApp,但不仅^x 会触发它,而且每次剪贴板更改时(所以如果您自己点击control+c)并且您需要某种方式来退出命令,例如如^{esc}::ExitApp 之类的。

    嗯!!

    【讨论】:

    • 我认为 AHK 很快,它不会等到 Python 代码完成而不是没有剪贴板内容,因为我没有任何空白输出。我现在得到的结果要么没有被python代码处理,要么被python代码处理而不是空白。
    • 有没有办法检查clipbarod上的内容是否改变了?如果是这样,那么我可以添加一些“等待”步骤。
    • 您是否尝试将它与扩展 .pyw 一起使用,这将在没有 Python 终端的情况下运行 Python 代码,它应该加载/运行更快。
    • @LouieLee 检查OnClipboardChange
    • @stevecody 太棒了。我只是重命名扩展名吗?没有那些分散注意力的黑色窗口,整个过程变得更快。
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2015-02-11
    • 2012-08-02
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多