如何更新显示的值而不是每次在 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 中打印?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python3 中向调用函数返回更多值并显示结果,目前它只打印第一个值而不增加? [复制]