尝试打印鼠标位置时输出错误

时间:2016-10-19 04:04:40

标签: python debugging pyautogui

我正在尝试制作一个不断打印鼠标位置直到停止的功能。 进口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

完成

2 个答案:

答案 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参数。