python - python键盘:转到文本的顶部?
问题描述
我尝试在 python 中创建一个宏,当按下时执行以下脚本以在文本之前添加时间:
import keyboard # using module keyboard
from datetime import *
from time import sleep
while True:
sleep(0.2)
try:
if keyboard.is_pressed('F12'):
now = datetime.now()
keyboard.press_and_release('Home')
keyboard.write(f"{now.hour}h{now.minute}m{now.second}s :")
keyboard.press_and_release('Enter')
except :
pass
在我发送一条多行的消息之前,它运行良好!如何解决问题?
1行消息:
hello
-> 按 F12 -> 发送15h45h07s : hello
多行:
line 1
line 2
line 3
-> 按 F12
发送 :
line 1
line 2
15h46m30s : line 3```
解决方案
您可以使用 Ctrl+Home 转到页面顶部,因此这里是改进的代码:
import keyboard # using module keyboard
from datetime import *
from time import sleep
while True:
sleep(0.2)
try:
if keyboard.is_pressed('F12'):
now = datetime.now()
keyboard.press_and_release('Ctrl+Home')
keyboard.write(f"{now.hour}h{now.minute}m{now.second}s :")
keyboard.press_and_release('End')
keyboard.press_and_release('Down')
except :
pass
但是,这只会在文件顶部插入时间,而不是任何后续行。如果你想用它来做多行,也许想一个更复杂的方法,你可能会存储一个在它们之前有时间的行列表,以及另一个清除这个列表的键。这是我的例子:
import keyboard # using module keyboard
from datetime import *
from time import sleep
lines = []
while True:
sleep(0.2)
try:
if keyboard.is_pressed('F12'):
now = datetime.now()
if len(lines) == 0:
keyboard.press_and_release('Ctrl+Home')
else:
keyboard.press_and_release('Home')
keyboard.write(f"{now.hour}h{now.minute}m{now.second}s :")
keyboard.press_and_release('End')
keyboard.press_and_release('Down')
lines.append("placeholder")
except :
pass
try:
if keyboard.is_pressed('F11'):
lines = []
except :
pass
PS我编辑了你的代码,而不是在最后添加一个输入,它下降了一行。这更适合做多行,因为它删除了不需要的空白。
推荐阅读
- r - 颜色 aes 断开 geom_line()
- python - 如何知道二维码被扫描了多少次
- python - sklearn DBSCAN 是否假设距离已标准化
- sql - 如何将分隔符从“,”更改为“。” 在 SQL 数据库中用于小数列
- android - firebase-perf make gradle 每次运行应用程序需要超过 7 分钟,Android studio 3.6.2
- c++ - 如何在构造类期间将可变参数函数存储在要调用的向量中?
- python - Snakemake - 第 20 行中缺少 MissingInputException:缺少规则字符串的输入文件:
- sql - 按值选择行并计算回转半径
- java - 如何复制和操作二维数组
- if-statement - Zsh - 如何将名称以“~”符号开头的变量与“if”语句进行比较?