如何在Tkinter的mainloop()后继续?

1 投票
1 回答
507 浏览
提问于 2025-04-18 08:34

我正在制作一个无害的Twitch TV机器人,它可以在聊天中执行一些命令。我已经使用这个机器人两个月了,决定为它创建一个小的图形界面(GUI),以便在运行时可以简单地修改一些变量。这个图形界面和机器人单独运行都没问题,但我遇到了让它们一起工作的困难。

我使用了Tkinter来创建这个图形界面,它需要一个循环来保持窗口打开。这个循环会阻止其他代码继续执行,从而无法启动机器人。我需要找到一种方法,让这个循环保持运行,同时也能继续执行机器人的其他部分,并在图形界面后面运行它。

这是机器人启动时连接图形界面的代码;

app = Geekster_Bot_GUI(None)
app.title('Geekster_Bot')
app.geometry('450x100')
app.mainloop()

然后它会继续连接到IRC(互联网中继聊天)。

我该如何在mainloop()之后继续呢?

1 个回答

0

你可以使用 threading(线程)或者 multiprocessing(多进程)。这里有个简单的例子:

import Tkinter
import threading

def create_frame():
    MessFrame = Tkinter.Tk()
    MessFrame.geometry('800x400+200+200')
    MessFrame.title('Main Frame')
    Framelabel = Tkinter.Label(MessFrame, text='Text Here', fg= 'red')
    Framelabel.place(x=10,y=10)
    MessFrame.mainloop()


t1 = threading.Thread(target=create_frame)
t1.start()

#continue
print 1234

不过...通常来说,最好把图形用户界面(GUI)放在主线程里。

撰写回答