Здравствуйте! Использую pysimplegui для создание интерфейса. Написал парсер. Теперь хочу подключить парсер к моему интерфейсу. По началу я хотел чтобы каждая спарсенная страница отображалась в поле вывода(в интерфейсе) Все написал, запустил, а оказывается, что пока парсер не закончит свою работу, то весь интерфейс просто перестает работать и ничего в поле вывода не появляется. Значит все синхроно. Почитал я прос асинхроность в pySimpleGui и решил переписать немного скрипт. Запустил. Начал работать, но почему-то в поле вывода показалась лишь одна запись и весь интерфейс опять перестал работать. Посмотрел сколько жрет оперативы и как нагружает процессор это приложение и оказалось, что достаточно хорошо потребляет из-за этой асинхроности.
Я решил сделать так. По нажатию на кнопку Start в интерфейсе запускать сам парсер, чтоб открылась командная строка и парсер начал работать. Как это сделать? Как сделать вызов скрипта? Чтоб он запустился в командной строке
Вот мой код от граф.интерфейса:
import PySimpleGUI as sg
import parser as ps
layout = [
[
sg.Text(text='Login',background_color='#fff',text_color='#000'), sg.InputText(size=(20,10),key='login_input'),
sg.Text(text='Password',background_color='#fff',text_color='#000'),sg.InputText(size=(20,10),key='password_input'),
sg.Button(button_text='Check Auth',key='check_auth',enable_events=True,button_color=('#000','#fff'),pad=((50,0),(0,0)),tooltip='Проверка логина и пароля')
],
[sg.Text(text='File',background_color='#fff',text_color='#000'),sg.InputText(key='file_input'),sg.FileBrowse()],
[sg.Text(text='Минимальное кол-во товаров на складе',background_color='#fff',text_color='#000'),sg.InputText(size=(10,2),key='min_count_input')],
[sg.Text(text='Максимальное кол-во дней',background_color='#fff',text_color='#000'),sg.InputText(size=(10,2),key='max_delivery_input')],
[sg.Checkbox(text='Использовать Tor?',key='check_parse',enable_events=True,default=True)],
[sg.Output(size=(88, 20))],
[sg.Submit(), sg.Cancel()]
]
window = sg.Window('File Compare', layout,background_color='#fff',button_color=('#000','#fff'))
parser = ps.Parser()
while True: # The Event Loop
event, values = window.read()
print(event, values)
if event in (None, 'Exit', 'Cancel'):
break
if event == 'Submit':
try:
list_data = parser.get_list_data(values['file_input'])
except Exception as e:
print('Error with file: ',e.args)
try:
parser.run(values['min_count_input'],values['max_delivery_input'],list_data)
except Exception as e:
print('Не хватает данных для парсинга. Заполните поля. ',e.args)
print('Hello')
window.close()
Код парсера нет надобности сюда вставлять. Обычный парсер.