Python Tkinter文本框插入问题
是否可能一个接一个地出现这些文本,而不是同时出现所有文本?我放了Python Tkinter文本框插入问题,python,tkinter,textbox,python-3.5,Python,Tkinter,Textbox,Python 3.5,是否可能一个接一个地出现这些文本,而不是同时出现所有文本?我放了time.sleep()来证明它不是单独出现的 编辑:这是我的代码。所以问题是,如果我使用self.tbox.insert(END,“text”)而不是print(“text”),那么文本的显示方式就不同了,如果我使用print,它当然会立即显示(prints)。我制作了一个网站爬虫或类似的东西,所以当文本出现在文本框中时等待是非常令人沮丧的。是的,我不想在这种情况下使用打印 from tkinter import * import
time.sleep()
来证明它不是单独出现的
编辑:这是我的代码。所以问题是,如果我使用self.tbox.insert(END,“text”)
而不是print(“text”)
,那么文本的显示方式就不同了,如果我使用print,它当然会立即显示(prints)。我制作了一个网站爬虫或类似的东西,所以当文本出现在文本框中时等待是非常令人沮丧的。是的,我不想在这种情况下使用打印
from tkinter import *
import time
class MyClass(object):
def __init__(self):
root = Tk()
button = Button(root, text="Button", command=self.command).pack()
#scrollbar and textbox
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
self.tbox = Text(root, wrap=WORD, yscrollcommand=scrollbar.set)
self.tbox.pack(fill=X)
scrollbar.configure(command=self.tbox.yview)
root.mainloop()
def command(self):
time.sleep(2)
self.tbox.insert(END, "Some text1\n")
time.sleep(2)
self.tbox.insert(END, "Some text2\n")
time.sleep(2)
self.tbox.insert(END, "Some text3")
MyClass()
time.sleep()是一个阻塞调用。使用
演示:
您正在逐个插入它们。你是在问如何让它们一个接一个地出现吗?@Bryan Oakley是的,我的意思是,我解决了这个问题。实际上,我不想在给定的时间内插入这些文本,我只是把
time.sleep()
放进去,以反映代码的执行大约需要时间。我希望这些文本在发生某些事情时出现。如如果x==y:self.tbox.insert(END,“Some text”)#此时将显示该文本
问题在于程序首先执行命令,然后在框中显示这些文本。我希望这些文本以精确的格式显示moment@fedoraman共享您的代码示例。我无法理解“这将在此时此刻出现”和“然后出现在方框中的文本”@Nehal J Wani我编辑了我的帖子并做出了更好的解释
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
from tkinter import *
phantom_path = r'phantomjs.exe'
driver = webdriver.PhantomJS(phantom_path)
class Crawler(object):
def __init__(self):
self.root = Tk()
self.root.title('Website Crawler')
label1 = Label(self.root, text='Select a website').pack()
self.website = StringVar()
Entry(self.root, textvariable=self.website).pack()
#button which executes the function
button = Button(self.root, text='Crawl', command=self.command)
button.pack()
#scrollbar and textbox
self.scrollbar = Scrollbar(self.root)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.tbox = Text(self.root, wrap=WORD, yscrollcommand=self.scrollbar.set)
self.tbox.pack(fill=X)
self.scrollbar.configure(command=self.tbox.yview)
self.root.mainloop()
def command(self):
url = self.website.get()
link_list = []
link_list2 = []
driver.get(url)
driver.implicitly_wait(5)
self.tbox.insert(END, "Crawling links..\n")
#finds all links on the site and appens them to list
try:
links = driver.find_elements_by_tag_name('a')
for x in links:
x = x.get_attribute('href')
link_list.append(x)
self.tbox.insert(END, str(x)+'\n')
except NoSuchElementException:
self.tbox.insert(END, 'This site have no links\n')
pass
try:
for sites in link_list:
driver.get(sites)
self.tbox.insert(END, "### In "+str(sites)+': ###\n')
links = driver.find_elements_by_tag_name('a')
for y in links:
y = y.get_attribute('href')
link_list.append(y)
self.tbox.insert(END, str(y)+'\n')
except NoSuchElementException:
self.tbox.insert(END, 'This site have no links\n')
pass
self.tbox.insert(END, 'Done\n\n')
Crawler()
from tkinter import *
import time
class MyClass(object):
def __init__(self):
self.root = Tk()
button = Button(self.root, text="Button", command=self.command).pack()
#scrollbar and textbox
scrollbar = Scrollbar(self.root)
scrollbar.pack(side=RIGHT, fill=Y)
self.tbox = Text(self.root, wrap=WORD, yscrollcommand=scrollbar.set)
self.tbox.pack(fill=X)
scrollbar.configure(command=self.tbox.yview)
self.root.mainloop()
def command(self):
self.root.after(1000, lambda: self.tbox.insert(END, "Some text1\n"))
self.root.after(2000, lambda: self.tbox.insert(END, "Some text2\n"))
self.root.after(3000, lambda: self.tbox.insert(END, "Some text3"))
MyClass()