【问题标题】:Using tkinter Text widgets to display the result使用 tkinter Text 小部件显示结果
【发布时间】:2019-09-16 20:16:24
【问题描述】:

我想随机选择一个范围内的 6 个数字并使用 Text 小部件显示它们。

程序应该每秒写一行 但输出只是一行(最后一行)..

代码:

from tkinter import *
import random
import time

wn=Tk()
wn.geometry("300x300")

for i in range(5):
    loto=random.sample(range(1,30),6)
    mytext=Text(wn,bg="pink",width=30,height=200)
    mytext.pack()
    mytext.insert('1.0', loto,"\n")
    mytext = mytext.get('1.0', 'end')
    time.sleep(1)

wn.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter widget


    【解决方案1】:

    您不能只使用time.sleep(1) 来查看更新,您必须更新主窗口。而且您每 1 秒创建 5 个 Text 小部件,一个就足够了。只需在循环之外添加一个并更新它。

    类似的东西..

    from tkinter import*
    import random, time
    
    wn=Tk()
    wn.geometry("300x300")
    
    mytext=Text(wn,bg="pink",width=30,height=200)
    mytext.pack()
    
    for i in range(5):
        loto = random.sample( range(1,30),6)
        mytext.insert('end', str(loto) + '\n')
        wn.update()
        time.sleep(1)
    
    wn.mainloop()
    

    虽然,这不是在 tkinter 中循环某些东西的推荐方式,但对于小循环和这些目的,它可以使用。如果你打算循环一些大的东西,比如在 tkinter 中更新大量的文本、小部件和图像,那么使用 after() 函数(How to use after()?)。简而言之,after 在每个给定的时间间隔内调用该函数,因此通过将其放入一个函数中,它会一直调用相同的函数直到您停止它,可以通过不同的方式停止 see this post on how to stop after

    使用after():

    from tkinter import*
    import random, time
    
    wn=Tk()
    wn.geometry("300x300")
    
    mytext=Text(wn,bg="pink",width=30,height=200)
    mytext.pack()
    
    def update(c=0):
        if c < 5:                                   # Runs 5 times
            loto = random.sample( range(1,30),6)
            mytext.insert('end', str(loto) + '\n')
            wn.after(1000, update, c+1)             # after( ms, func, args )
    
    update()                                        # Called the function once
    
    wn.mainloop()
    

    【讨论】:

    • 谢谢你 Saad..你的回答是帮助充分..现在。我怎样才能增加/提高你的声誉?
    • 接受并支持您问题的最佳答案。 :)
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2017-08-25
    • 2011-04-16
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多