wxPython is a
wrapper for the
cross-platform
In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software ...
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
API (often referred to as a "
toolkit A toolkit is an assembly of tools; set of basic building units for user interfaces.
The word toolkit may refer to:
* Abstract Window Toolkit
* Accessibility Toolkit
* Adventure Game Toolkit
* B-Toolkit
* Battlefield Mod Development Toolkit
* Che ...
")
wxWidgets (which is written in
C++) for the
Python programming language. It is one of the alternatives to
Tkinter. It is implemented as a Python extension module (
native code).
History
In 1995, Robin Dunn needed a
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
application to be deployed on
HP-UX systems but also run
Windows 3.1
Windows 3.1 is a major release of Microsoft Windows. It was released to manufacturing on April 6, 1992, as a successor to Windows 3.0.
Like its predecessors, the Windows 3.1 series ran as a shell on top of MS-DOS. Codenamed Janus, Windows ...
within short time frame. He needed a cross-platform solution. While evaluating free and commercial solutions, he ran across
Python bindings on the wxWidgets toolkit webpage (known as wxWindows at the time). This was Dunn's introduction to Python. Together with Harri Pasanen and Edward Zimmerman he
developed those initial bindings into wxPython 0.2.
In August 1998, version 0.3 of wxPython was released. It was built for wxWidgets 2.0 and ran on Win32, with a wxGTK version in the works.
The first versions of the wrapper were created by hand. However, the code became difficult to maintain and keep synchronized with wxWidgets releases. By 1997, versions were created with
SWIG, greatly decreasing the amount of work to update the wrapper.
Project Phoenix
In 2010, the Project Phoenix began; an effort to clean up the wxPython implementation and in the process make it compatible with Python 3. The project is a new implementation of wxPython, focused on improving speed, maintainability and extensibility. Like previous version of wxPython, it wraps the wxWidgets C++ toolkit and provides access to the user interface portions of the wxWidgets API.
With the release of 4.0.0a1 wxPython in 2017, the Project Phoenix version became the official version. wxPython 4.x is the current version being developed as of June 2022.
Use
wxPython enables Python to be used for cross-platform
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
applications requiring very little, if any, platform-specific code.
Example
This is a simple "
Hello world" module, depicting the creation of the two main objects in wxPython (the main window object and the application object), followed by passing the control to the event-driven system (by calling
MainLoop()
) which manages the user-interactive part of the program.
#!/usr/bin/env python3
import wx
app = wx.App(False) # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, title="Hello World") # A Frame is a top-level window.
frame.Show(True) # Show the frame.
app.MainLoop()
This is another example of wxPython Close Button with wxPython GUI display show in Windows 10 operation system.
import wx
class WxButton(wx.Frame):
def __init__(self, *args, **kw):
super(WxButton, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
closeButton = wx.Button(pnl, label='Close Me', pos=(20, 20))
closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
self.SetSize((350, 250))
self.SetTitle('Close Button')
self.Centre()
def OnClose(self, e):
self.Close(True)
def main():
app = wx.App()
ex = WxButton(None)
ex.Show()
app.MainLoop()
if __name__ "__main__":
main()
License
Being a wrapper, wxPython uses the same
free software licence used by
wxWidgets (
wxWindows License)—which is approved by
Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed under copyleft ( ...
and
Open Source Initiative
The Open Source Initiative (OSI) is the steward of the Open Source Definition, the set of rules that define open source software. It is a California public-benefit nonprofit corporation, with 501(c)(3) tax-exempt status.
The organization wa ...
.
Applications developed with wxPython
*
Chandler, a personal information manager
*
Dropbox, desktop client for the Dropbox cloud-based storage
*
Editra
Editra is a cross-platform, open-source text editor, released under a wxWindows license. It is written by Cody Precord in Python, and it was first publicly released in June 2007. As of November 2011 the project is in alpha development phase, but ...
, a multi-platform text editor
*
Google Drive, desktop client for the Google cloud-based storage system
*
GRASS GIS, a free, open source geographical information system
*
Métamorphose, a batch renamer
*
Phatch, a photo batch processor
*
PlayOnLinux and
PlayOnMac,
Wine
Wine is an alcoholic drink typically made from Fermentation in winemaking, fermented grapes. Yeast in winemaking, Yeast consumes the sugar in the grapes and converts it to ethanol and carbon dioxide, releasing heat in the process. Different ...
front-ends
*
PsychoPy, experiment creation tool for neuroscience and psychology research
References
Citations
Sources
*
Further reading
*
External links
*
wxPython Widget Tutorial SeriesProject Phoenix main pageList of applications developed with wxPython
{{DEFAULTSORT:Wxpython
1998 software
Free computer libraries
Python (programming language) libraries
Widget toolkits
WxWidgets