要在tkinter小部件中显示数组/列表吗

2024-04-20 02:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个webscraper,它可以从一个网站获取产品(https://www.jdsports.co.uk/c/clothing/)我把它打印到控制台中,现在所有产品都在第一页上,然后我想在tkinter窗口中显示它,我的输出在左边有一个滚动条和一个可滚动的奇怪大小的滚动框,以及如何去掉括号和逗号的列表/数组:) 这是密码

#imports
from selenium import webdriver
import tkinter
import csv

#Window Calls
home = tkinter.Tk()
home.title("Home")
home.geometry('500x500')

urlselec=''

def shopClothing():
    urlselec="https://www.jdsports.co.uk/c/clothing/?max=72"
    url = urlselec
    return url, scrapeOrAuto(url)

def shopFootWare():
    urlselec='https://www.jdsports.co.uk/c/footwear/?max=72'
    url = urlselec
    return url, scrapeOrAuto(url)

def shopAccessories():
    urlselec='https://www.jdsports.co.uk/c/accessories/'
    url = urlselec
    return  url, scrapeOrAuto(url)


def scrapeOrAuto(url):
    home.withdraw()
    secndmenu = tkinter.Tk()
    secndmenu.title('Choose')
    secndmenu.geometry('300x300')
    url = url
    scrapeBtn = tkinter.Button(secndmenu, text='scrape', command=lambda url=url:scrape(url,secndmenu))

    scrapeBtn.pack()
    secndmenu.mainloop()

def scrape(url,secndmenu):
    secndmenu.withdraw()

    #Arrays
    productArray = []
    priceArray = []
    a=-1
    array =[]

    #Indexs
    pricestate = 0
    productstate = 0

    #Window Calls
    scraperAlert = tkinter.Tk()
    scraperAlert.title('Alert!')
    scraperAlert.geometry('300x200')

    #window Lables
    tkinter.Label(scraperAlert,text='Scraping!').pack()

    #Browser Commands
    browser = webdriver.Chrome()
    browser.get(url)

    #Element Finder
    products = browser.find_elements_by_class_name("itemTitle")
    price = browser.find_elements_by_class_name("itemPrice")
    # soruce = browser.page_source

    for product in products:
        productstate = productstate +1
        # print(productstate,product.text)
        productArray.insert(productstate,[product.text])

    for price in price:
        pricestate = pricestate +1
        # print(pricestate,price.text)
        priceArray.insert(pricestate,[price.text])

    for count in range(len(productArray)):
        print(productArray[count],priceArray[count])
        array.insert(count,(productArray[count],priceArray[count]))
    browser.close()

    scroll_bar = tkinter.Scrollbar(scraperAlert)
    text_widget = tkinter.Text(scraperAlert)
    scroll_bar.pack(side=tkinter.LEFT)
    text_widget.pack(side=tkinter.LEFT)



#Buttons
clothing = tkinter.Button(anchor='center',text="Clothing", command =shopClothing)
footware = tkinter.Button(anchor='center',text='Footware', command=shopFootWare)
accessories = tkinter.Button(text='Accessories', command=shopAccessories)

#WindowCompile
clothing.pack()
footware.pack()
accessories.pack()
home.mainloop()



Tags: textbrowserurlhometkinterdefcountprice