我正在尝试制作一个不断打印鼠标位置直到停止的功能。 进口pyautogui
String.IsNullOrEmpty
预期输出应如下所示:
X:265 Y:634 只有一行不断刷新
但这就是我所得到的:
XXXXXXXXXXXXXXXXXXX:665 Y:587
XXXXXXXXXXXXXXXXX:665 Y:587
XXXXXXXXXXXXXXXXXXXX:665 Y:587
XXXXXXXXXX:718 Y:598
XXXXXXXXXXXX:1268 Y:766
删除\ b个字符 进口pyautogui
import pyautogui
print('Press CTRL + "c" to stop')
while True:
try:
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr, end = ' ')
print('\b' * len(positionStr), end = '', flush = True)
except KeyboardInterrupt:
print('\nDone')
break
X:830 Y:543
X:830 Y:543
X:830 Y:543
X:830 Y:543
完成
答案 0 :(得分:3)
您可以使用回车符打印该行:
即。 :
print(positionStr + '\r'),
像这样,下一行将取代现有的一行。并且您将始终看到使用新鼠标位置更新了一行。
完整的脚本:
#!/usr/bin/env python
import pyautogui
print('Press CTRL + "c" to stop')
while True:
try:
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr + '\r'),
except KeyboardInterrupt:
print('\nDone')
break
希望它有所帮助。
编辑
如下面的评论所述,此解决方案适用于Unix平台,但未在其他平台上进行测试。它应该从不同的行结束约定中断。感谢@ Code-Apprentice,他指出了这一点。
重新编辑
自从OP和Code-Apprentice的评论以来,我试图像这样修复脚本,它的工作方式与预期的一样:
import pyautogui
print('Press CTRL + "c" to stop')
while True:
try:
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr, end=' ')
print('\b' * (len(positionStr) + 1), end='')
except KeyboardInterrupt:
print('\nDone')
break
答案 1 :(得分:1)
你没有退回足够多的角色。你忘了考虑额外的空间“结束”字符。当然,您应该完全省略end
参数。