微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为文本框 tkinter python 插入文本

如何解决为文本框 tkinter python 插入文本

from tkinter import *
from tkinter import ttk
import tkinter as tk
import time
class __MENU__(tk.Tk):
    def insert_(self):
        while True:
            self.text_Box.insert('end','hi\n')
            time.sleep(1)
    def __init__(self):
        tk.Tk.__init__(self)
        self.geometry('700x350')
        self.title('AUTO-TDS')
        frame=ttk.Frame(self)
        self.text_Box=Text(frame,height=13,width=30,wrap='word')
        #self.text_Box.insert('end','Auto Trao Đổi Sub v1\n')
        self.text_Box.pack(side=LEFT,expand=True)
        sb=ttk.Scrollbar(frame)
        sb.pack(side=RIGHT,fill=BOTH)
        self.text_Box.config(yscrollcommand=sb.set)
        sb.config(command=self.text_Box.yview)
        frame.pack(expand=True)
        self.bnt=ttk.Button(self,text='start',command=self.insert_).place(x=500,y=300)
        
if __name__=='__main__':
    __MENU__().mainloop()

当我按下开始时,我的界面没有反应 ,我想用while循环连续打印,怎么办?

解决方法

循环混乱 mainloop。使用.after()。您的 while 循环将永远持续下去,因为条件始终为 True。

def insert_(self):
      self.text_box.insert('end','hi\n')
      self.after(1000,self.insert_)

如果要使用 while 循环,请使用 threading 模块。

from tkinter import *
from tkinter import ttk
import tkinter as tk
import time,threading
class __MENU__(tk.Tk):
    def insert_(self):
        while True:
            self.text_box.insert('end','hi\n')
            time.sleep(1)
    def insert_text(self):
        x=threading.Thread(target=self.insert_)
        x.daemon = True
        x.start()
    def __init__(self):
        tk.Tk.__init__(self)
        ....
        self.bnt=ttk.Button(self,text='start',command=self.insert_text).place(x=500,y=300)
       
if __name__=='__main__':
    __MENU__().mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。