如何在Python中每次更新显示的值而不是每次打印?

时间:2018-08-24 02:21:31

标签: python

这是我能解释的最简单的方法。

当前,我有一个列表,该列表在每次更改时都通过打印来显示。我想称其为“卡片”列表,并为其分配了以下内容。

cards = ["A", "B", "C", "D"]

我不想每次更改时都打印整个列表,而是只希望对其进行单个显示更改。我将如何去做?

2 个答案:

答案 0 :(得分:1)

>>> cards = ["A", "B", "C", "D"]    
>>> from time import sleep
>>> for i in range(400):
>>>     print("\r" + str(cards), end="")
>>>     sleep(0.5)

取自this stackoverflow post

这不符合您的目的吗?您正在重新打印整个内容,但是位置相同,因此除非担心速度,否则没有什么区别

答案 1 :(得分:1)

您可以使用带有tkinter的小型GUI来显示您的值,或者从@kevinkayaks建议中导出,在控制台中打印卡片:

import tkinter as tk
import random


def print_cards(cards):
    print("\r" + ' '.join(cards), end='', flush=True)


def shuffle_cards():
    random.shuffle(cards)
    print_cards(cards)
    for card, text in zip(cards, texts):
        text.set(card)
    root.after(1000, shuffle_cards)


cards = ["A", "B", "C", "D"]

root = tk.Tk()
texts = [tk.StringVar() for _ in range(4)]
for idx in range(4):
    tk.Label(root, textvariable=texts[idx]).grid(row=0, column=idx)
    texts[idx].set(cards[idx])

shuffle_cards()

root.mainloop()