首页 > 解决方案 > 在 Python Tkinter 中,如何在 mainloop 窗口打开后运行代码?

问题描述

我想创建一个小动画,其中文本出现在像屏幕这样的旧单色终端上,就好像有人在打字一样。但是,我在 GUI 窗口打开后尝试运行代码时经常遇到问题。当窗口打开或根本不出现时,文本总是已经存在。任何帮助都非常感谢:)

string = "Hello World this is a Test String"

import random
import time
import tkinter as tk
from tkinter import *

vid = tk.Tk()
vid.title('Terminal')

text = Text( vid, width = 100, height = 50,  highlightthickness=1, bg='black', highlightbackground="black", font=('Courier', 14), fg='green')
text.pack()

def main():
for i in string:
    text.insert(END, i)
    time.sleep(0.2)

text.after(10, main)
vid.mainloop()

这是我到目前为止想出的:/

标签: pythontkinter

解决方案


您需要update_idletasks()在睡后使用。以下对我有用,如果您有任何其他问题,请告诉我:

string = "Hello World this is a Test String"

import random
import time
import tkinter as tk
from tkinter import *

vid = tk.Tk()
vid.title('Terminal')

text = Text( vid, width = 100, height = 50,  highlightthickness=1, bg='black', highlightbackground="black", font=('Courier', 14), fg='green')
text.pack()

def main():
    for i in string:
        text.insert(END, i)
        time.sleep(0.2)
        vid.update_idletasks()

vid.after(10, main)
vid.mainloop()

推荐阅读