Добавить поле ввода в окне интерфейса. PySimpleGui
Хочу сделать окно ввода чтобы по нажатию кнопки "загрузить письма" происходила обработка и в изображение добавлялось слово, в зависимости от введенного, не получилось разобраться, сделал пока по-колхозному через консоль так:
from PIL import Image, ImageDraw, ImageFont
import PySimpleGUI as sg
import pandas as pd
from tqdm import tqdm
sg.theme("SystemDefaultForReal")
layout = [
[sg.Submit("Загрузить письма", size=(27, 2), font=20)],
#[sg.Text('Месяц', size =(15, 1)), sg.InputText()],
]
window = sg.Window('Letter', icon='1.ico').Layout(layout)
while True: # The Event Loop
event, values = window.read()
# print(event, values) #debug
if event == 'Загрузить письма':
xlsx = pd.read_excel("obr.xlsx")
c = []
month = input("Введите месяц с заглавной буквы\n")
print("1 этап из 1:")
for ind in tqdm(range(len(xlsx))):
if xlsx.iloc[ind]['A60'] == "письмо" or xlsx.iloc[ind]['A60'] == "звонок":
image = Image.open("shabl.jpg")
font1 = ImageFont.truetype("times.ttf", 50)
drawer = ImageDraw.Draw(image)
if month == "Январь":
drawer.text((1030, 981), "январе", font=font1, fill='black')
if month == "Февраль":
drawer.text((1030, 981), "феврале", font=font1, fill='black')
if month == "Март":
drawer.text((1030, 981), "марте", font=font1, fill='black')
if month == "Апрель":
drawer.text((1030, 981), "апреле", font=font1, fill='black')
if month == "Май":
drawer.text((1030, 981), "мае", font=font1, fill='black')
if month == "Июнь":
drawer.text((1030, 981), "июне", font=font1, fill='black')
if month == "Июль":
drawer.text((1030, 981), "июле", font=font1, fill='black')
if month == "Август":
drawer.text((1030, 981), "августе", font=font1, fill='black')
if month == "Сентябрь":
drawer.text((1030, 981), "сентябре", font=font1, fill='black')
if month == "Октябрь":
drawer.text((1030, 981), "октябре", font=font1, fill='black')
if month == "Ноябрь":
drawer.text((1030, 981), "ноябре", font=font1, fill='black')
if month == "Декабрь":
drawer.text((1030, 981), "декабре", font=font1, fill='black')
image.save(f"C:/pict/other{ind}.jpg")
if event in (None, 'Exit', 'Закрыть'):
break
Ответы (1 шт):
Автор решения: Андрей Ковров
→ Ссылка
Сделал так, почему то обычный else не отрабатывает, пришлось воспользоваться elif:
from PIL import Image, ImageDraw, ImageFont
import PySimpleGUI as sg
import pandas as pd
sg.theme("SystemDefaultForReal")
xlsx = pd.read_excel("obr.xlsx")
layout = [
[sg.Button("Загрузить письма", size=(27, 2), font=20)],
[sg.Text('Введите месяц:', size=(15, 1)), sg.InputText(key='-MONTH-', do_not_clear=False)],
[sg.ProgressBar(len(xlsx), orientation='h', size=(20, 20), key='progressbar')]]
window = sg.Window('Letter', icon='1.ico').Layout(layout)
while True:
event, values = window.read()
if event == 'Загрузить письма':
step = 1
for ind in range(len(xlsx)):
window['progressbar'].update(step)
step += 1
if xlsx.iloc[ind]['A60'] == "письмо" or xlsx.iloc[ind]['A60'] == "звонок":
image = Image.open("shabl.jpg")
font1 = ImageFont.truetype("times.ttf", 50)
drawer = ImageDraw.Draw(image)
if values['-MONTH-'] == "Январь":
drawer.text((1030, 981), "январе", font=font1, fill='black')
if values['-MONTH-'] == "Февраль":
drawer.text((1030, 981), "феврале", font=font1, fill='black')
if values['-MONTH-'] == "Март":
drawer.text((1030, 981), "марте", font=font1, fill='black')
if values['-MONTH-'] == "Апрель":
drawer.text((1030, 981), "апреле", font=font1, fill='black')
if values['-MONTH-'] == "Май":
drawer.text((1030, 981), "мае", font=font1, fill='black')
if values['-MONTH-'] == "Июнь":
drawer.text((1030, 981), "июне", font=font1, fill='black')
if values['-MONTH-'] == "Июль":
drawer.text((1030, 981), "июле", font=font1, fill='black')
if values['-MONTH-'] == "Август":
drawer.text((1030, 981), "августе", font=font1, fill='black')
if values['-MONTH-'] == "Сентябрь":
drawer.text((1030, 981), "сентябре", font=font1, fill='black')
if values['-MONTH-'] == "Октябрь":
drawer.text((1030, 981), "октябре", font=font1, fill='black')
if values['-MONTH-'] == "Ноябрь":
drawer.text((1030, 981), "ноябре", font=font1, fill='black')
if values['-MONTH-'] == "Декабрь":
drawer.text((1030, 981), "декабре", font=font1, fill='black')
elif (values['-MONTH-'] != "Декабрь"
and values['-MONTH-'] != "Январь"
and values['-MONTH-'] != "Февраль"
and values['-MONTH-'] != "Март"
and values['-MONTH-'] != "Апрель"
and values['-MONTH-'] != "Май"
and values['-MONTH-'] != "Июнь"
and values['-MONTH-'] != "Июль"
and values['-MONTH-'] != "Август"
and values['-MONTH-'] != "Сентябрь"
and values['-MONTH-'] != "Октябрь"
and values['-MONTH-'] != "Ноябрь"):
sg.Popup('Введите месяц с заглавной буквы!')
break
image.save(f"C:/pict/other{ind}.jpg")
if event in (None, 'Exit', 'Закрыть'):
break
window.close()