Моя цель - создать бота Discord, который при использовании команды берет все, что вы сказали, и отображает это на маленьком Tkinter GUI. Мне удалось заставить его работать с двумя скриптами по отдельности, ботом Discord и скриптом tkinter, который будет проверять текстовый файл (где находится текст из Discord) каждый раз и обновлять метку tkinter. Конечно, это не очень эффективно, поэтому я хочу, чтобы он обновлял gui только тогда, когда команда используется в Discord. Я читал о многопоточности и многопроцессорности, но оба дают мне такие ошибки, как «потоки / процессы могут быть запущены только один раз» или просто не работают так, как мне нужно. программирование, но работа с потоками и процессами. Это правильный способ достичь того, о чем я упоминал ранее? Это код для бота Discord:
client = commands.Bot(command_prefix='*')
gui_main = threading.Thread(target=gui.main)
gui_main.start()
@client.event
async def on_ready():
print('**Listo gfe')
@client.command()
async def showchechu(ctx,*,text):
print(text)
f = open("input.txt", "w")
f.write(text)
f.close()
gui_main.start()
embed = discord.Embed(
title = str(ctx.message.author.name),
description = text,
colour = discord.Colour.blue()
)
embed.set_footer(text='Dale unos segundos y le saldrá tu mensaje al chechu')
await ctx.send(embed=embed)
@client.command()
async def ole(ctx):
channel = ctx.message.author.channel
print(channel)
await channel.connect()
client.run(TOKEN)
А это код для GUI:
import tkinter as tk
def main():
root=tk.Tk()
root.attributes('-fullscreen', True)
root.wm_attributes("-topmost", 1)
pad=3
root.geometry("{0}x{1}+0+0".format(
root.winfo_screenwidth()-pad, root.winfo_screenheight()-pad))
def exit(event):
root.destroy()
root.bind('<Escape>',exit)
#root.after(5000, root.destroy)
set_label(root)
root.mainloop()
def update_input():
input_text = ''
f = open("input.txt", "r")
input_text = f.read()
f.close()
return input_text
def set_label(root):
svar = tk.StringVar()
input_text = update_input()
svar.set(input_text)
labl = tk.Label(root, bd=8, wraplength=350, textvariable=svar, heigh=5, font=('Helvetica 25 bold'))
labl.pack()
print('msg: '+str(input_text))
Я использую python 3.8