To develop a cross platform desktop app, you need to use a cross platform widget toolkit - Toga. Toga abstracts away the differences between the various platforms, providing a common Python API for app development.

On macOS, this API uses the capabilities of Rubicon to access native system libraries. Rubicon is a bridge library that gives you transparent access to all the native Objective C classes that iOS provides. On Linux, native Python bindings for GTK+ are used. On Windows, ctypes is used to call Win32 C APIs directly.

Once you've written your desktop application, you can use Briefcase to package your Python code for specific platforms. Briefcase takes the distutils definition for your Python project, and uses that metadata to generate a stub project, compile your Python code, and place the compiled artefacts so that they will be found when you run the app. The stub project is generated using the Python macOS template.

Follow the tutorial in the briefcase docs to get started!