gpt4 book ai didi

python - 如何使用wxPython将值正确继承到线程类中

转载 作者:行者123 更新时间:2023-12-01 04:33:36 25 4
gpt4 key购买 nike

我有一个 wxPython gui 正在控制一些硬件。我需要一个按钮来在功能运行时禁用。该函数还接收一个参数值

假设我有一个绑定(bind)到按钮按下的函数:

    def button_press(self, event):

in_val = self.num_in.GetValue() #grabs a value from a NumCtrl
TheThread(in_val) #initiates the thread with argument
btn = event.GetEventObject()
btn.Disable() #disables button

该函数转到以下线程类:

    class TheThread(Thread):
def __init__(self, in_val):

"""Init Worker Thread Class."""
Thread.__init__(self)

self.run(in_val)

def run(self, in_val):
print val
time.sleep(5)

wx.CallAfter(Publisher.sendMessage, "ctrl")
"""
threadsafe method to call a pub.subscribe that runs a
function to re-enable button
"""

这无法正常工作,因为 GUI 在函数运行期间卡住,并且按钮无法正确禁用。

如何正确继承此参数以使其正常运行?也许涉及 self.start() 方法?

最佳答案

您对 start 方法的猜测是正确的。

run 是在新线程上调用的方法,start 是您要调用以告知 Thread 对象的方法来做到这一点。

在您的示例中,通过自己调用 run ,您将在主线程上调用 run ,并且根本不会发生任何线程。 (线程从未启动)

class TheThread(Thread):
def __init__(self, in_val):

"""Init Worker Thread Class."""
Thread.__init__(self)

self.in_val = in_val
self.start()

def run(self):
print self.in_val
time.sleep(5)

wx.CallAfter(Publisher.sendMessage, "ctrl")
"""
threadsafe method to call a pub.subscribe that runs a
function to re-enable button
"""

关于python - 如何使用wxPython将值正确继承到线程类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com