【问题标题】:Refresh the idle output刷新空闲输出
【发布时间】:2015-09-28 06:19:44
【问题描述】:

我有一个 python 脚本每秒更新一个变量,使用代码:

import threading
m = 0
def printthis():
    threading.Timer(0.5,printthis).start()
    def f1():
        global m
        m = m + 1
        return
    f1()
printthis()

我希望每秒在空闲 shell 上更新变量 m。我不希望程序只打印 1、2、3、4... 我希望它打印 1,然后刷新 shell 以显示变量已更改为的内容。

【问题讨论】:

  • 这不会在空闲时工作,它不是一个真正的 tty。闲置是必需品吗?
  • This SO question/answer 应该会有所帮助。
  • 1. Idle 是一个开发环境,通常不用于已经开发的程序的例行运行。一个例外是在 Windows 上,它的 unicode 支持比命令提示符更好。 2. Python没有定义控制字符的效果,包括\r,当写入一个'文件'时,包括stdout和stderr。在通用换行符模式下,Python 本身将 \r 解释为 \n。将 1 和 2 放在一起,您应该在将 \r 解释为“返回到行首”的控制台窗口中直接使用带有 python <filename> 的程序。

标签: python python-idle


【解决方案1】:

如果您想要控制输出屏幕,无论您的程序如何运行,请创建一个您可以控制的屏幕。以下 tkinter 程序执行您的要求,包括在 Idle 运行时,这是我快速开发它的地方。

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.pack()

m = 0
def update():
    global m
    text.delete('1.0', 'end')
    text.insert('1.0', str(m))
    m += 1
    root.after(1000, update)
update()  # initialize cycle

root.mainloop()

【讨论】:

  • 非常感谢!我必须了解 tkinter - 我仍然是 python 菜鸟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2019-03-20
相关资源
最近更新 更多