0

我遇到了 Python 的 Tkinter 模块的问题。当我尝试制作画布时,它在外壳打印完成之前不会出现。我的代码如下所示:

from tkinter import *
import time
tk = Tk()
canvas = Canvas(tk, width=500, height=500)
canvas.pack()
money = 500
canvas.create_text(100, 30, text="Money: " + str(money), font=('Impact', 25))
time.sleep(2)
print("Give Me A Chance To Load")
time.sleep(4)
buy = input("Will You Buy A Cow?")
if buy == "Yes":
    money -= 50
if buy == "No":
    money -= 999999999999999999999

这个程序应该更新画布上的钱。问题是直到你回答输入并且钱仍然在500之前画布不会出现。我做错了什么?

4

1 回答 1

1

你在打电话time.sleep(...)。你知道那是做什么的吗?它会导致你的程序——你的整个程序——进入休眠状态。当它处于睡眠状态时,它不能做其他事情,例如将自己绘制到屏幕上。

此外,在事件循环运行之前,无法绘制 GUI(几乎使用任何工具包)。它是响应“请求绘制”事件的事件循环导致窗口出现在屏幕上。

Tkinter 并非设计用于处理来自控制台的输入。尝试这样做几乎总是会让人失望。

于 2013-05-27T12:06:21.867 回答