所以我浏览了一本书,并复制了与那里完全相同的代码。代码应该做的是,\ b删除该行,以便位置始终在同一位置更新。在我的情况下,虽然它绘制了奇怪的蓝色cirlces。我尝试了没有flush = True,但它给出了相同的结果。
while True:
x,y = pyautogui.position()
posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
print ( posStr, end='')
print('\b' *len(posStr), end='', flush= True)
如何才能获得更新输出的效果?
编辑: 更确切地说: 当我有以下代码时:
import pyautogui
while True:
x,y = pyautogui.position()
posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
print ( posStr, end='')
print('\b' *len(posStr), end='', flush= True)
我明白了:http://i.imgur.com/U8fsvIx.png 我为\ b打印了奇怪的蓝色圆圈(虽然它实际上应该删除一个字符)
当我使用代码时:
import pyautogui
while True:
x,y = pyautogui.position()
posStr = 'X: '+ str(x).rjust(4)+ ' Y: ' +str(y).rjust(4)
print ( '\r'+ posStr, end='')
我得到以下结果:http://i.imgur.com/nznN2H3.png 我的文字无穷无尽。 不知怎的,我只是不能用'\ r'或'\ b'来删除已经写过的东西。
那么问题是什么?
答案 0 :(得分:1)
while True:
x, y = pyautogui.position()
print('X: %4d Y: %4d' % (x, y), end = '\r')
\r
将导致下一个打印写入相同的内容。你的字符串必须具有相同的长度,或者你可以用空格填充。
\n
会启动换行符\r
不会。
替代解决方案:
while True:
x, y = pyautogui.position()
print('X: %d Y: %d' % (x, y) + ' ' * 20, end = '\r')
+ ' ' * 20
将在屏幕上写入20个空格以删除行的其余部分
仅使用'X: %d Y: %d'
而不填充(%4d
或+ ' ' * 20
)
# x, y = 1000, 1000 prints:
X: 1000 Y: 1000
# x, y = 30, 40 prints:
X: 30 Y: 401000
在第一次打印后,零将保留,您将获得脏数据。