#python #multithreading #tkinter #signals
Вопрос:
Ну, я создаю приложение в tkinter, и для моего фонового процесса я использую потоки, чтобы мое приложение зависало во время выполнения фонового процесса.
Но я делаю для себя исключение. Линейный бот.login() создает исключение.
Ниже приведен код.
from tkinter import *
import threading
from instabot import Bot
def login_thread():
threading.Thread(target=login).start()
def login():
# pb = progress_bar()
# pb.start()
username = username_variable.get()
password = password_variable.get()
try:
canvas.delete('usernameTag')
canvas.delete('passwordTag')
canvas.delete('invalidLoginTag')
except:
pass
cookie_del = glob.glob("config/*cookie.json")
try:
os.remove(cookie_del[0])
except Exception:
pass
if username == '':
username_error()
# pb.stop()
# pb.unpack()
elif password == '':
password_error()
# pb.stop()
# pb.unpack()
else:
try:
print("hi")
bot.login(username=username,password=password)
print('hello')
# pb.stop()
# pb.unpack()
unpack_login_panel()
acc.pack(username)
except Exception as e:
print(e)
invalid_login()
# pb.stop()
# pb.unpack()
b0 = Button(
image = img0,
borderwidth = 0,
highlightthickness = 0,
command = login_thread,
relief = "flat")
b0.place(
x = 760, y = 453,
width = 550,
height = 43)
Это дает мне исключение, что сигнал работает только в основном потоке. кстати, это всего лишь небольшая часть кода.
Кто-нибудь может мне в этом помочь?
Комментарии:
1. Как вы думаете, зачем вам здесь нужна нить? То, что ты пытаешься сделать, не сработает. Либо вы забываете о потоке и оставляете код в таком виде, либо перестраиваете его и просто выполняете рабочий поток, который досент мешает основному потоку. На этом сайте есть несколько вопросов, которые помогут вам разобраться в этой проблеме.
Ответ №1:
Просто отсутствует необязательный аргумент
бот.логин(is_threaded = True)