【发布时间】:2021-09-14 20:58:46
【问题描述】:
好吧,我在 tkinter 中创建应用程序,而我的后台进程使用线程,所以我的应用程序在执行后台进程时被冻结。
但是,我给了我一个例外。 bot.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)
这给了我一个例外,即信号仅在主线程中有效。顺便说一句,这只是代码的一小部分。 任何人都可以帮助我吗?
【问题讨论】:
-
你为什么认为你需要一个线程?你试图做的事情不会奏效。要么忘记线程并留下这样的代码,要么重新排列它并只做一个不会干扰主线程的工作线程。这个网站上有几个问题可以帮助你理解这个问题。
标签: python multithreading tkinter signals