Tkinter окно "Не отвечает"
Всем привет. Виснет окно Tkinter как только делаю запрос. С ним раньше вообще не работал, но потребовался сейчас. Еще не пойму как выводить картинки в строчку
import tkinter as tk
import tkinter.filedialog
from PIL import Image, ImageTk
import telethon
import asyncio
import json
import python_socks
import helpers as hp
import models
import threading
from typing import Optional
from telethon import TelegramClient
from telethon import events
class Main(tk.Tk):
def __init__(self):
super().__init__()
self.title("Генератор картинок")
self.resizable(True, True)
self.sessions = []
self.proxy = models.get_proxy()
self.get_sessions = hp.get_sessions()
self.request = tk.StringVar(self)
self.name_label = tk.Label(self, text="Введите запрос")
self.name_label.grid(row=0, column=4, sticky="e")
self.name_entry = tk.Entry(self, textvariable=self.request)
self.name_entry.grid(row=0,column=6, padx=20, pady=1, sticky="e")
self.message_button = tk.Button(self, text="Сгенерировать", command=self.callback)
self.message_button.grid(row=0,column=10, padx=0, pady=1, sticky="e")
def parse_sessions(self, request):
for i in range(len(self.get_sessions)):
with open(f'./ss/{self.get_sessions[i]}.json', 'r', encoding='utf-8') as file:
get_data = json.load(file)
TelegClient = TelegramClient(
session=f'./ss/{self.get_sessions[i]}.session',
api_id=get_data['app_id'],
api_hash=get_data['app_hash'],
system_version=get_data['sdk'],
app_version=get_data['app_version'],
device_model=get_data['device'],
lang_code=get_data['lang_pack'],
proxy=self.proxy,
connection_retries=3,
request_retries=3,
retry_delay=1,
system_lang_code=get_data['system_lang_pack'],
auto_reconnect=True,
timeout=30
)
self.sessions.append(TelegClient)
self.create_loop(request=self.request)
async def account_connect(self, client, request):
try:
await client.connect()
except:
pass
await client.send_message('https://t.me/sber_rudalle_xl_bot', '/start')
await client.send_message('https://t.me/sber_rudalle_xl_bot', f'{self.request}')
@client.on(events.NewMessage(pattern=f'"{self.request}"'))
async def handler(event):
self.add_photo(await event.download_media(file="photos/output"))
def create_loop(self, request):
for i in range(len(self.sessions)):
loop = asyncio.get_event_loop()
loop.create_task(self.account_connect(client=self.sessions[i],request=self.request))
loop.run_forever()
def callback(self):
print(f"[ + ] Начинаю генерацию по запросу '{self.request.get()}'")
threading.Thread(target=self.parse_sessions(request=self.request.get()).start)
def add_photo(self, link):
self.image = ImageTk.PhotoImage(Image.open(link))
tk.Label(self, image=self.image).grid(row=0, column=10)
if __name__ == "__main__":
main = Main()
main.mainloop()