emdding python gui in c code - OS independent

T

tinauser

hi there,
i need to embed python GUI in a c++ code. I've seen that,while on
windows running GUI is no problem, in mac i need to use pythonw
instead python.
the question is,how should i tell the program that if the OS is mac,
it should pythonw, otherwise python is fine?
 
C

Chris Rebert

hi there,
i need to embed python GUI in a c++ code. I've seen that,while on
windows running GUI is no problem, in mac i need to use pythonw
instead python.
the question is,how should i tell the program that if the OS is mac,
it should pythonw, otherwise python is fine?

I think you have it backwards. MS Windows is where one typically needs
to use pythonw to suppress a console window from opening when Python
is run. *nixes (including Mac OS X) have no such problem and (I'm
pretty sure) only have a pythonw executable for compatibility
purposes. Just specify pythonw regardless of OS and you should be
fine.

Cheers,
Chris
 
T

tinauser

I think you have it backwards. MS Windows is where one typically needs
to use pythonw to suppress a console window from opening when Python
is run. *nixes (including Mac OS X) have no such problem and (I'm
pretty sure) only have a pythonw executable for compatibility
purposes. Just specify pythonw regardless of OS and you should be
fine.

Cheers,
Chris
--http://blog.rebertia.com

thanks:
how do i specify pythonw programmatically?
i tried Py_SetProgramName("pythonw");

it doesn't raise errors, but does not solve the problem on mac, i.e. i
get the error:

This program needs access to the screen.
Please run with 'pythonw', not 'python', and only when you are logged
in on the main display of your Mac.
 
D

Diez B. Roggisch

This is not entirely true, there is a difference on the mac, see below.
thanks:
how do i specify pythonw programmatically?
i tried Py_SetProgramName("pythonw");

it doesn't raise errors, but does not solve the problem on mac, i.e. i
get the error:

This program needs access to the screen.
Please run with 'pythonw', not 'python', and only when you are logged
in on the main display of your Mac.

I'm not sure that's your problem. It is not about the *name* of the
program. It is about Python being a Framework build. Which the ones that
come with OSX are, and if you link against them that's enough.

However, you are writing your *own* binary program, and I guess that's
the problem. I don't know without further research why there is a
difference between commandline and GUI-programs in OSX (I guess it has
to do with the event loop or something), but I think your umbrella
program is the real culprit here. If it's not a proper GUI program
(whatever that exactly means), delegating rendering of a GUI to Python
will trigger that code that spits out your above error message.


Diez
 
G

Gregory Ewing

Diez said:
I don't know without further research why there is a
difference between commandline and GUI-programs in OSX (I guess it has
to do with the event loop or something)

The MacOSX display server is rather picky about which processes
it will allow to connect to it. One of the necessary conditions
seems to be that the executable is inside an application bundle.

If the program you're embedding Python in is being compiled as
an application (something you can double-click to launch from
the Finder) then it will probably be able to have a GUI. Otherwise,
it may not.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top