Привет, у меня проблемы с запуском моего приложения.Я новичок в кодировании, поэтому любые советы по моему коду могут быть оценены.Я пытаюсь сделать графический интерфейс для моего веб-мастера.Без графического интерфейса он прекрасно работает и собирает всю информацию в файл .csv.Затем, когда я создал графический интерфейс с кнопками, чтобы он работал, он зависает.Я попытался изменить сон на root.after, даже удалив эту строку, потому что я читал в других потоках, что это главная причина зависания графического интерфейса, но все еще не мог исправить это.
Кроме того, нафункции, которые я определил, я не уверен, можно ли ставить любое случайное слово, например, «цены», потому что я не использую его или что будет правильным способом.
Вот мой код, спасибо заранее.
import requests
from bs4 import BeautifulSoup
from time import sleep
from random import randint
import csv
import os
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Mercados App")
root.geometry("500x500")
app = Frame(root)
def updating(prices):
switch = True
if switch:
f = open("ListaDePreciosTodos.csv", "wt", newline="")
writer = csv.writer(f)
file_lista_productosPV = open("ListaPV", "r")
lista_productosPV = file_lista_productosPV.readlines()
file_lista_productosT = open("ListaT", "r")
lista_productosT = file_lista_productosT.readlines()
file_lista_productosW = open("ListaW", "r")
lista_productosW = file_lista_productosW.readlines()
writer.writerow(["PV Producto", "PV Precio", "T Producto", "T Precio",
"W Producto", "W Precio"])
os.system('say "Price updates starting now"')
for searchPV, searchT, searchW in zip(lista_productosPV, lista_productosT, lista_productosW):
urlPV = "https://www.pv.com/" + searchPV.strip() + "/p"
rPV = requests.get(urlPV)
soupPV = BeautifulSoup(rPV.content, "lxml")
urlT = "http://www.T.com.pe/t/product/" + searchT.strip() + "?navAction=jump&navCount=2"
rT = requests.get(urlT)
soupT = BeautifulSoup(rT.content, "lxml")
urlW = "https://www.w.com/" + searchW.strip() + "/p"
rW = requests.get(urlW)
soupW = BeautifulSoup(rW.content, "lxml")
try:
productoPV = soupPV.find(["div"], {"class": ["g-nombre-prod"]}).text
precioPV = soupPV.find(["strong"], {"class": ["skuBestPrice"]}).text
productoT = soupT.find(["div"], {"class": ["title"]}).h5.text
precioTxKG = soupT.find(["div"], {"class": ["price-unit"]}).text
precioTxUN = soupT.find(["span"], {"class": ["active-price"]}).span.text
if precioTxKG.strip() is "":
precio_final_t = precioTxUN.replace("S/ ", "").strip()
else:
precio_final_t = precioTxKG.replace("/KG)","").replace("(","").replace("S/ ","").strip()
productoW = soupW.find(["div"], {"class": ["name"]}).text
precioW = soupW.find(["strong"], {"class": ["skuBestPrice"]}).text
writer.writerow([productoPV, precioPV.replace("S/", ""),
productoT.replace("VERDURAS" or "FRUTAS" or "T", "").strip(),
precio_final_t, productoW, precioW.replace("S/. ", "")])
except AttributeError:
try:
writer.writerow([productoPV, "No Disp.",
productoT.replace("VERDURAS" or "FRUTAS" or "T", "").strip(),
precio_final_t, productoW, precioW.replace("S/. ", ""), ])
except AttributeError:
try:
writer.writerow([productoPV, precioPV.replace("S/", ""),
productoT.replace("VERDURAS" or "FRUTAS" or "T", "").strip(),
"No Disp.", productoW, precioW.replace("S/. ", ""), ])
except:
writer.writerow([productoPV, precioPV.replace("S/", ""),
productoT.replace("VERDURAS" or "FRUTAS" or "T", "").strip(),
precio_final_t, productoW, "No Disp."])
f.close()
os.system('say "your file is ready"')
def stopupdating(prices):
global switch
switch = False
app.grid()
Label(root, text="Bienvenidos").grid(row=0, column=1, sticky=W, padx=8)
startButton = Button(root, text="Start updating prices")
startButton.bind("<Button-1>", updating)
startButton.grid(row=1, column=1, sticky=W, padx=10)
stopButton = Button(root, text="Stop updating prices")
stopButton.bind("<Button-1>", stopupdating)
stopButton.grid(row=2, column=1, sticky=W, padx=10)
root.mainloop()