from Tkinter import *
import time
while True:
for message in "Hello World":
time.sleep(.5)
root = Tk()
lb = Listbox(root, height=3)
lb.pack()
lb.insert(END, message)
lb.insert(END,"second entry")
lb.insert(END,"third entry")
root.mainloop()
答案 0 :(得分:2)
您必须使用root.after
来调用添加单个字母的函数,然后使用root.after
调用相同的函数来添加下一个字母。
from Tkinter import *
# --- functions ---
def add_letter(text):
if text: # if text not empty
# add first letter from text
lb.insert(END, text[0])
# call again without first letter
root.after(500, add_letter, text[1:])
# --- main ---
root = Tk()
lb = Listbox(root, height=15)
lb.pack()
# first call after 500ms
root.after(500, add_letter, "Hello World")
root.mainloop()
编辑移动文字:)使用Text
和反向文字
from Tkinter import *
# --- functions ---
def add_letter(text):
if text: # if text not empty
# add first letter from text
lb.insert('1.0', text[0]) # put at the beginning of line
# call again without first letter
root.after(250, add_letter, text[1:])
# --- main ---
root = Tk()
lb = Text(root)
lb.pack()
text = ''.join(reversed("Hello World of Python and Tkinter"))
# first call after 250ms
root.after(250, add_letter, text)
root.mainloop()
答案 1 :(得分:0)
您的代码永远不会超越while True:
循环。因此,不会执行创建窗口和窗口小部件的其余代码,因此不会出现窗口。
尝试删除while循环:
from Tkinter import *
import time
for message in "Hello World":
time.sleep(.5)
root = Tk()
lb = Listbox(root, height=3)
lb.pack()
lb.insert(END, message)
lb.insert(END,"second entry")
lb.insert(END,"third entry")
root.mainloop()
现在你的代码将遍历字符串中的字符,每个字符睡眠0.5秒。然后将创建并显示窗口和小部件。
答案 2 :(得分:0)
发布的代码将被卡在无限循环(while True)中,在“Hello World”中每个角色一遍又一遍地沉睡.5秒
第一个问题是While和sleep,两者都是不必要的。如果你想要这些字母,那么你就是在正确的轨道上,因为字符串是Python中的char列表
我相信你想要的东西如下:
import Tkinter
root = Tkinter.Tk()
lb = Tkinter.Listbox(root, height=3)
lb.pack()
for message in "Hello World":
lb.insert(Tkinter.END, message)
lb.insert(Tkinter.END, "second last entry")
lb.insert(Tkinter.END, "THE last entry")
lb.config(height=20)
root.mainloop()
注意配置调整大小,否则我们只能看到超出H e l的元素,如果我们点击列表并使用箭头键滚动。以下内容可以帮助您了解如何让列表框调整大小:)