我有一個控制某些硬件的wxPython gui。 我需要一個按鈕在功能運行時禁用。該功能還接收參數值如何正確使用wxPython將值繼承到線程類中
讓我們說,我有這個功能綁定到一個按鈕按下:
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()方法的東西?
謝謝!所以我想在線程的情況下,你不會將參數值傳遞給下一個函數,而是將它作爲self.var傳遞給函數?是否有一個原因? –
@ supremus_58對,'run'方法本身不帶任何參數。但是,如果您傳遞目標函數,您也可以提供參數,並且默認的'Thread.run'方法將使用您提供的參數調用目標可調用。 't = Thread(target = my_func,args =(「arg1」,「arg2」),kwargs = {「kwarg1」:「val」})''t.start()'' – GP89