如何在PySimpleGUI中显示discord.py bot的控制台

2024-10-03 19:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在PySimpleGui中显示discord.py bot的控制台,我不想在控制台中打印任何内容,因此我将控制台中的所有内容写入.txt文件,而不是将其打印到控制台,并且由于日志记录模块,txt文件会实时更新,我想实际显示.txt文件而不是控制台,但是如果我启动脚本gui冻结,没有响应,甚至没有用关闭按钮关闭,我使用异步IO和线程运行bot,所以它不会使gui崩溃这是我的代码

async def runBot():
    await client.start(token)

loop = asyncio.get_event_loop()

def runBot2():
    loop.run_until_complete(runBot())

runBotThread = threading.Thread(target=runBot2)

runBotThread.start()

在while循环中:

while True:
    event, values = sgwindow.read(timeout=100)

    sgwindow['console'].update(log)

    if event == sg.WIN_CLOSED:
        updateLogThread.stop()
        loop.close()
        break

以及live.txt的字符串

log = None

logFile = open(f'logs/{logFileName}', 'r')

def updateLog():
    log = logFile.read()

updateLogThread = threading.Thread(target=updateLog)

updateLogThread.start()

这是将其写入文本文件的日志配置

logging.basicConfig(filename = f'logs/{logFileName}',format='%(asctime)s - ' + '%(levelname)s' + ': %(message)s' + '\n', level=logging.WARNING)

Tags: 文件txtloopeventlog内容defbot