Python:无限循环和GUI

3
我正在尝试编写一个使用wxPython GUI的Python程序。程序需要在后台收集一些信息(无限循环),但此时GUI应该是活动状态的。例如,如果我点击某个按钮,则某个变量或其他信息必须更改,并且在新周期中,此变量应代替旧变量使用。
但我不知道如何做到这一点。我认为必须使用线程,但我不了解如何使用它。
有人可以建议如何解决这个问题吗?
提前致谢!

可能是Python/wxPython: 在后台持续执行工作的重复问题。 - miku
1
当你说必须使用线程时,你是正确的。GUI必须使用一个线程,任何其他处理都应该在另一个线程上进行。从一个简单的线程示例开始,逐步提高难度。https://dev59.com/ZlrUa4cB1Zd3GeqPilOq - styfle
3个回答

2

0
这被称为“线程”。使用Python的线程模块
两个例子: 例子1:
from threading import Thread

class MyCollector(Thread):

    def __init__(self, collect_from):
        Thread.__init__(self) # must be called !
        self.collect_from = collect_from

    def run(self):
        while True:
            # .. collect ur things


collector_thread = MyCollector(my_source_to_collect_from)
collector_thread.start()

# go on with gui

示例2:

from threading import Thread

def collector(collect_from):
    while True:
        # .. collect ur things

collector_thread = Thread(target = collector, args = (my_source_to_collect_from,))
collector_thread.start()

# go on with gui

0
你是否考虑过让wxPython定期调用你的事件处理程序,并在其中执行后台处理?当然,这取决于你能够将工作划分为离散的部分。请注意,你的后台处理必须是非阻塞的,以便及时返回给wxPython,以便进行响应式的GUI处理。我不确定在wxPython中实现此类后台处理的惯用方法是什么,但如果我记得没错的话,(Py)Qt中的技巧是使用定时器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接