On Monday, October 27, 2014 11:55:44 PM UTC+1, MRAB wrote: > On 2014-10-27 22:38, kiuhnm wrote: > > Consider this code: > > > > --- > > from ctypes import * > > > > user32 = windll.user32 > > user32.MessageBoxA(0, 'ok', 'ok', 0) > > --- > > > > If I run it in idle or from pycharm, the messagebox shows 'o' instead of > > 'ok', but if I run it from shell, it shows 'ok' like it should. > > The same happens with msvcrt.printf(). > > Why? > > > You didn't say whether you're using Python 2 or Python 3, but it looks > like you're using Python 3. > > There are 2 forms of the MessageBox function, one with the suffix 'A', > which uses bytestrings, and one with the suffix 'W', which uses Unicode > strings. > > In Python 3, the str class is a Unicode string, so you'll want the > MessageBoxW function: > > from ctypes import * > > user32 = windll.user32 > user32.MessageBoxW(0, 'ok', 'ok', 0) > > Also, the msvcrt.printf function expects a bytestring.
Yes, you're right. Thank you both. -- https://mail.python.org/mailman/listinfo/python-list