GUIs & Games

wxPython

Builds desktop apps that actually look like they belong on your specific operating system.

Install it: pip install wxpython

What does it do?

wxPython wraps a toolkit that draws each button, menu, and window using the real native controls of whatever operating system it’s running on, so a wxPython app on a Mac looks like a Mac app and the same app on Windows looks like a Windows app. Rather than painting its own custom-styled buttons like some toolkits do, it borrows the actual native ones your operating system already provides. It’s like ordering a suit tailored fresh for whichever city you’re wearing it in, rather than one generic outfit that looks slightly foreign everywhere. It’s been a stable, if less flashy, option in the Python GUI world for a very long time.

See it in action

This opens a basic desktop window with a title bar that stays open until the user closes it.

import wx

app = wx.App()
frame = wx.Frame(None, title="Hello wxPython")
frame.Show()
app.MainLoop()

Why would a non-developer care?

Users notice, even subconsciously, when software doesn’t match the rest of their operating system, and that mismatch can quietly undermine trust in an application, something wxPython’s native-controls approach avoids entirely.

Real-world examples

wxPython has been used for cross-platform desktop tools where blending into the native operating system mattered more than a custom visual brand, including various scientific and engineering utilities. It predates many newer alternatives, with roots going back to the wxWidgets C++ toolkit from the 1990s. It remains a solid, if quieter, choice compared to the more heavily marketed Qt-based options.

Who uses it

Developers who specifically want their Python desktop app to blend in with each operating system’s native look rather than impose a custom style.

How it compares to alternatives

Unlike PyQt5 or PySide6, which draw their own consistent custom-styled widgets across platforms, wxPython uses each platform’s actual native controls, trading visual consistency across platforms for a more authentic native feel on each one.

New to Python and want to actually try libraries like this yourself?

Find a beginner-friendly course

Related libraries