different behavior from idle/pycharm and shell

kiuhnm03 at yahoo.it kiuhnm03 at yahoo.it
Tue Oct 28 00:14:25 CET 2014


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.



More information about the Python-list mailing list