當我運行下面的代碼時,出現「不知道如何轉換參數」錯誤。我正在嘗試切斷我的名字。請幫助。「不知道如何轉換參數」Python中的錯誤
import ctypes
from itertools import islice
i = "sakthi srinivasan"
sliced_text = islice(i, 0, 6)
ctypes.windll.user32.MessageBoxW(0, sliced_text, "MsgBox", 0)
當我運行下面的代碼時,出現「不知道如何轉換參數」錯誤。我正在嘗試切斷我的名字。請幫助。「不知道如何轉換參數」Python中的錯誤
import ctypes
from itertools import islice
i = "sakthi srinivasan"
sliced_text = islice(i, 0, 6)
ctypes.windll.user32.MessageBoxW(0, sliced_text, "MsgBox", 0)
的第二個參數MessageBoxW
是一個字符串。函數itertools.islice
返回對i
中字符的迭代器。由於ctypes不知道如何將其轉換爲字符數組,它會拋出錯誤「不知道如何轉換參數...」。
你可以迭代器轉換成字符串''.join(sliced_text)
,但這樣在這裏做的最好的方法是使用通過傳遞i[0:6]
作爲第二個參數內置到Python字符串切片。這是在Python中獲取子字符串的標準方法。
const char*
const wchar_t*
,這取決於你是否在UNICODE配置編譯。
Simon Hibbs在評論中回答了OP的問題,但我想我會爲未來的讀者提供一個稍微更詳細的答案。它也會使這看起來像一個沒有答案的問題。 – BloodGain
消息框希望給它一個字符串,而不是Python迭代器對象。只要通過'我[0:6]'。 –
它的工作原理!謝謝:) –