簡體   English   中英

如何在我的 tkinter 文本窗口中打印結果?

[英]How do i print out result in my tkinter text window?

我將如何在我的 tkinter 文本窗口中打印結果? 現在,來自 selenium 的“信息獲取”部分正在工作並打印到 cmd 中,但是,TKinter 窗口凍結,然后繼續崩潰。 我正在考慮對文本窗口進行更新循環,以便 TKinter 可以查看是否需要進行更新。 但我不確定這是否有效,因為我認為問題是同時運行代碼和窗口。

from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from tkinter import *
import sys

def Program():
#Giving search a value through Entry
    search = entrySearch.get()

#Initializing Webdriver
    driver = webdriver.Chrome('C:/Users/Oliver/Desktop/chromedriver', chrome_options=chrome_options)
    driver.create_options()
    driver.get("http://www.allabolag.se/what/"+search)
    print("Accessing Database...")

#Selecting 'Href' Company Link in search and clicking
    try:
        select = driver.find_element_by_partial_link_text(search).click()
        print("Element Found...")
    except:
        driver.refresh()
        select = driver.find_element_by_xpath('/html/body/div[4]/div[4]/div/div[2]/div[1]/article/div/div/div[1]/h2/a').click()
        print("Backup Element Found...")

#Collecting company information
    try:
        company = driver.find_element_by_xpath('/html/body/div[4]/div[5]/div/div[1]/div[1]/div/div/div/h1').get_attribute("innerHTML")
        revenue = driver.find_element_by_xpath('/html/body/div[4]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[1]').get_attribute("innerHTML")
        profit = driver.find_element_by_xpath('/html/body/div[4]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[3]/td[1]').get_attribute("innerHTML")
        assets = driver.find_element_by_xpath('/html/body/div[4]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[4]/td[1]').get_attribute("innerHTML")
        print("Got Results...")
    except:
        company = driver.find_element_by_xpath('/html/body/div[7]/div[5]/div/div[1]/div[1]/div/div/div/h1').get_attribute("innerHTML")
        revenue = driver.find_element_by_xpath('/html/body/div[7]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[1]').get_attribute("innerHTML")
        profit = driver.find_element_by_xpath('/html/body/div[7]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[3]/td[1]').get_attribute("innerHTML")
        assets = driver.find_element_by_xpath('/html/body/div[7]/div[5]/div/div[1]/div[3]/div/div[1]/div[1]/div[1]/div[2]/div[1]/table/tbody/tr[4]/td[1]').get_attribute("innerHTML")
        print("Got Backup Results...")

        resultOutput.insert(END, company)

#Printing spaces in cmd for easy reading
    i=0
    while i < 25:
        print(" ")
        i+=1

#Printing result
    print("Företag: " +company.strip())
    print("Omsättning: " + revenue.strip() + " 000"+" kr")
    print("Vinst: " + profit.strip() + " 000"+" kr")
    print("Tillgångar: " + assets.strip() + " 000"+" kr")

    restart = input("Tryck 'R' för att start om eller 'S' för att avsluta: ")
    if restart == "s":
        sys.exit()
    else:
        Program()


#Running chromedriver borderless and avoiding annoying log spams
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--log-level=3")

#Initializing TKinter window
root = Tk()

frame = Frame(root, bg='#86c5da')
frame.place(relwidth=1, relheight=1)

entrySearch = Entry(frame, bg='white')
entrySearch.place(relwidth=0.4, relheight=0.05, relx=0.3, rely=0.05)

entryButton = Button(entrySearch, text='Search', bg='#143641', fg='white', command = Program)
entryButton.place(relwidth=0.1, relheight=1, relx=0.9)

resultScroll = Scrollbar(frame)
resultOutput = Text(frame, bg='white', fg='black')
resultScroll.pack(side=RIGHT, fill=Y)
resultOutput.place(relwidth=0.5, relheight=0.6, relx=0.25, rely=0.2)
resultScroll.config(command=resultOutput.yview)
resultOutput.config(yscrollcommand=resultScroll.set)

root.mainloop()

使用 .after() 方法在主循環旁邊運行代碼和循環。 可以在此處找到對該方法的非常好的解釋: https : //www.geeksforgeeks.org/python-after-method-in-tkinter/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM