def message(text):
windll.user32.MessageBoxW(0, text, 'Message', 0x20)
def otherfunc(startDistance, hops, i, formats, j):
text = str('Distance: ' + str((startDistance + (hops * i))) + '. Format: ' + formats[j])
threading.Thread(target=message, args=(text)).start()
由于某种原因,即使您可以清楚地看到该文本是一个字符串,此代码也会产生该函数获取29个参数的错误。 任何人都知道如何解决? 此外,在没有线程的情况下调用message()时,它可以正常工作。问题在于它需要它在一个线程中。
答案 0 :(得分:4)
args
必须是一个序列,但是你传入了字符串:
threading.Thread(target=message, args=(text)).start()
添加逗号:
threading.Thread(target=message, args=(text,)).start()
你需要至少一个逗号来制作元组;在许多情况下,括号是可选的:
>>> ('foo')
'foo'
>>> 'foo',
('foo',)
如果没有逗号,则会将29个单独字符的序列传递给message()
函数。