【问题标题】:How do I update values displayed rather than print every time in Python?如何更新显示的值而不是每次在 Python 中打印?
【发布时间】:2019-01-30 11:19:45
【问题描述】:

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

目前,我有一个列表,每次更改时都会打印出来。我想将其称为“卡片”列表,并为其分配以下内容。

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

我不想在每次更改时都打印整个列表,我只想更改一次显示。我该怎么做呢?

【问题讨论】:

  • 你在哪里打印?你在使用 gui 库吗?你是说例如第二个元素从"B"变为"S",你想只打印“S”吗?
  • 您是否只想运行该程序,然后让它继续自行更改?

标签: python


【解决方案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()

【讨论】:

    【解决方案2】:
    >>> 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

    这不符合您的目的吗?您正在重新打印整个内容,但在相同的位置,所以除非速度是一个问题,否则没有区别

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2014-04-23
      • 2022-01-25
      相关资源
      最近更新 更多