我正在尝试打开一个Tkinter,同时运行一个与线程和异步不协调的机器人。我的代码如下:
def screen():
global msg_entry, channel_entry
main_window = tk.Tk()
main_window.geometry('720x540+50+50')
main_window.title('Control')
main_window.configure(bg=col1)
main_window.resizable(0,0)
msg_box = tk.Entry()
msg_entry = tk.Entry(main_window, font = 'Helvetica 20',
width = 10, bg = col4, fg = 'white')
msg_entry.place(x=100, y=240)
channel_entry = tk.Entry(main_window, font = 'Helvetica 20',
width = 10, bg = col4, fg = 'white')
channel_entry.place(x=350, y=240)
submit = HoverButton(main_window, bd=0, highlightthickness=0, font = 'Helvetica 25 bold', text = "Send",
width = 7, height = 1, bg = col4, fg = col2, justify = 'left'
,command = lambda: asyncio.get_event_loop().run_until_complete(send()), activebackground = col5)
submit.place(x= 220, y = 320)
main_window.mainloop()
# 614001879831150605
async def send():
ce = channel_entry.get()
channel = client.get_channel(int(ce))
await channel.send(msg_entry)
def func1():
client.loop.create_task(update_meme())
client.run(token)
if __name__ == '__main__':
Thread(target = func1).start()
Thread(target = screen).start()运行代码时会出现以下错误:
RuntimeError: There is no current event loop in thread 'Thread-7'.
我对线程和异步很陌生,所以任何帮助都很感激。
发布于 2022-02-03 16:42:16
您可以看到,您还没有定义一个事件循环来在其中创建一个任务。所以在您的func1中这样做:
def func1():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
client = commands.Bot(command_prefix='!')
@client.command()
async def send():
ce = channel_entry.get()
channel = client.get_channel(int(ce))
await channel.send(msg_entry)
loop.run_until_complete(client.run('token'))然后在下面定义您的命令。另外,不要忘记加入您的线程(我将它们设置为变量(1&2),只是为了演示)
https://stackoverflow.com/questions/61166674
复制相似问题