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

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

你在哪里打印?你在使用 gui 库吗?你是说例如第二个元素从"B"变为"S",你想只打印“S”吗? 您是否只想运行该程序,然后让它继续自行更改? 【参考方案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 *** post

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

【讨论】:

以上是关于如何更新显示的值而不是每次在 Python 中打印?的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中更新 html 标记的值而不覆盖前几轮

如何在 Python3 中向调用函数返回更多值并显示结果,目前它只打印第一个值而不增加? [复制]

java子类打印参数默认值而不是指定的值

如何按显示的值而不是数据字段值对gridview列进行排序/过滤

在go语言中,如何在反引号中调用变量的值而不是变量名

如何使用jquery Highcharts在饼图中显示值而不是百分比