【发布时间】:2020-03-28 08:51:10
【问题描述】:
我有一个问题,我无法理解这些库。
我的主要代码如下所示:
import tkinter as tk
import concurrent.futures
from news_bar import NewsBar
from fbscout import FbScout #it bases on sellenium
def run():
scout.login(USER_EMAIL, USER_PASS)
while True:
news = str(scout.check_news())
if news:
news_bar.add_text(news)
if __name__ == "__main__":
root = tk.Tk()
news_bar = NewsBar(root)
scout = FbScout.Scrpper()
scout.set_groups(GROUPS)
with concurrent.futures.ThreadPoolExecutor() as executor:
gui = executor.submit(news_bar.mainloop())
sc = executor.submit(scout.run_browser())
run = executor.submit(run())
运行 tkinter 的 gui 主循环后,程序冻结并且不执行其余代码。
gui = executor.submit(news_bar.mainloop())
我不知道如何命令程序不要等到无限循环执行......当我关闭 tkinter 的窗口时,它会走得更远
评论: 总结一下。我有两个函数 news_bar.mainloop() 等待事件和 run() 是无限循环。而且我希望它们同时工作并且彼此独立。
【问题讨论】:
-
While True:,怎么破解? -
我没有。程序正在创建过程中。我添加了这些行以查看是否一切正常。但它仍然没有......甚至在我不关闭 tkinter 的 gui 窗口之前都没有达到这些线。
-
你需要使用另一个线程来使用
for循环来运行你的add_text -
即使我这样做了,线程仍然被gui线程阻塞......
标签: python-3.x multithreading selenium tkinter threadpoolexecutor