1
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() 时,它工作正常。问题是它必须在一个线程中。

4

1 回答 1

4

args必须是一个序列,但您传入的是字符串:

threading.Thread(target=message, args=(text)).start()

添加逗号:

threading.Thread(target=message, args=(text,)).start()

你至少需要一个逗号来组成一个元组;在许多情况下,括号是可选的:

>>> ('foo')
'foo'
>>> 'foo',
('foo',)

如果没有逗号,您将向message()函数传递 29 个单独字符的序列。

于 2013-10-09T09:24:13.513 回答