Software:WxPython: Difference between revisions

From HandWiki
imported>Corlink
link
 
LinXED (talk | contribs)
over-write
 
Line 1: Line 1:
{{Short description|Python wrapper for wxWidgets}}
{{lowercase title|title=wxPython}}
{{Infobox software
{{Infobox software
| name =  
| name =  
Line 9: Line 7:
| developer              = Robin Dunn<br />Harri Pasanen
| developer              = Robin Dunn<br />Harri Pasanen
| released              = {{Start date and age|1998|df=yes}}
| released              = {{Start date and age|1998|df=yes}}
| latest release version = 4.2.1<ref>{{Cite web|date=2023-06-07|title=wxPython Changelog|url=https://wxpython.org/news/2023-06-07-wxpython-411-release/index.html|access-date=2023-06-30|website=wxPython|language=en}}</ref>
| latest release version = 4.2.2<ref>{{Cite web|date=2024-09-11|title=wxPython Changelog|url=https://www.wxpython.org/news/2024-09-11-wxpython-422-release/index.html|access-date=2024-11-28|website=wxPython|language=en}}</ref>
| latest release date    = {{Start date and age|2023|06|07}}
| latest release date    = {{Start date and age|2024|09|11}}
| latest preview version =  
| latest preview version =  
| latest preview date    =
| latest preview date    =
| programming language  = [[C++]] / [[Python (programming language)|Python]]
| programming language  = [[C++]] / [[Python (programming language)|Python]]
| operating system      = Cross-platform
| operating system      = [[Cross-platform]]
| genre                  =
| genre                  =
| license                = [[Software:WxWidgets#License|wxWindows License]]
| license                = [[Software:WxWidgets#License|wxWindows License]]
| website                = {{URL|http://wxpython.org/}}
| website                = {{URL|http://wxpython.org/}}
}}
}}
'''wxPython''' is a [[Wrapper library|wrapper]] for the cross-platform [[Graphical user interface|GUI]] [[Application programming interface|API]] (often referred to as a "toolkit") [[Software:WxWidgets|wxWidgets]] (which is written in [[C++]]) for the [[Python (programming language)|Python programming language]]. It is one of the alternatives to [[Software:Tkinter|Tkinter]]. It is implemented as a Python extension module (native code).
'''wxPython''' is a [[Wrapper library|wrapper]] for the [[Cross-platform|cross-platform]] [[Graphical user interface|GUI]] [[Application programming interface|API]] (often referred to as a "toolkit") [[Software:WxWidgets|wxWidgets]] (which is written in [[C++]]) for the [[Python (programming language)|Python programming language]]. It is one of the alternatives to [[Software:Tkinter|Tkinter]]. It is implemented as a Python extension module (native code).


==History==
==History==
Line 29: Line 27:


=== Project Phoenix ===
=== Project Phoenix ===
In 2010, the Project Phoenix began; an effort to clean up the wxPython [[Implementation|implementation]] and in the process make it compatible with Python 3.<ref>{{cite web |title=Goals of Project Phoenix |url=http://wiki.wxpython.org/ProjectPhoenix/ProjectGoals |access-date=2016-03-17}}</ref> The project is a new implementation of wxPython, focused on improving speed, maintainability and extensibility. Like the previous version of wxPython, it wraps the wxWidgets [[C++]] toolkit and provides access to the [[User interface|user interface]] portions of the wxWidgets [[API]].<ref>{{cite web |title=Project Phoenix readme file on GitHub |url=https://github.com/wxWidgets/Phoenix/blob/master/README.rst |access-date=2014-01-01}}</ref>
In 2010, the Project Phoenix began; an effort to clean up the wxPython [[Implementation|implementation]] and in the process make it compatible with Python 3.<ref>{{cite web |title=Goals of Project Phoenix |url=http://wiki.wxpython.org/ProjectPhoenix/ProjectGoals |access-date=2016-03-17}}</ref> The project is a new implementation of wxPython, focused on improving speed, maintainability and extensibility. Like the previous version of wxPython, it wraps the wxWidgets [[C++]] toolkit and provides access to the [[User interface|user interface]] portions of the wxWidgets [[API]].<ref>{{cite web |title=Project Phoenix readme file on GitHub |website=[[GitHub]] |url=https://github.com/wxWidgets/Phoenix/blob/master/README.rst |access-date=2014-01-01}}</ref>


With the release of 4.0.0a1 wxPython in 2017, the Project Phoenix version became the official version.<ref>{{Cite web |last=Robin |date=2017-04-16 |title=wxPython 4.0.0a1 Release |url=https://wxpython.org/news/wxpython-4.0.0a1-release/index.html |access-date=2022-06-25 |website=wxPython |language=en}}</ref> wxPython 4.x is the current version being developed as of June 2022.<ref>{{Cite web |last=Team |first=The wxPython |date=2020-11-21 |title=wxPython 4.1.1 Released |url=https://wxpython.org/news/2020-11-21-wxpython-411-release/index.html |access-date=2022-06-25 |website=wxPython |language=en}}</ref>
With the release of 4.0.0a1 wxPython in 2017, the Project Phoenix version became the official version.<ref>{{Cite web |last=Robin |date=2017-04-16 |title=wxPython 4.0.0a1 Release |url=https://wxpython.org/news/wxpython-4.0.0a1-release/index.html |access-date=2022-06-25 |website=wxPython |language=en}}</ref> wxPython 4.x is the current version being developed as of June 2022.<ref>{{Cite web |last=Team |first=The wxPython |date=2020-11-21 |title=wxPython 4.1.1 Released |url=https://wxpython.org/news/2020-11-21-wxpython-411-release/index.html |access-date=2022-06-25 |website=wxPython |language=en}}</ref>
Line 40: Line 38:
This is a simple "Hello world" module, depicting the creation of the two main [[Object (computer science)|objects]] in wxPython (the main window object and the application object), followed by passing the control to the [[Event-driven programming|event-driven]] system (by calling <code>MainLoop()</code>) which manages the user-interactive part of the program.
This is a simple "Hello world" module, depicting the creation of the two main [[Object (computer science)|objects]] in wxPython (the main window object and the application object), followed by passing the control to the [[Event-driven programming|event-driven]] system (by calling <code>MainLoop()</code>) which manages the user-interactive part of the program.


<source lang="python">
<syntaxhighlight lang="python">
#!/usr/bin/env python3
#!/usr/bin/env python3


Line 49: Line 47:
frame.Show(True)    # Show the frame.
frame.Show(True)    # Show the frame.
app.MainLoop()
app.MainLoop()
</source>
</syntaxhighlight>
This is another example of the wxPython Close Button with wxPython GUI display show in Windows 10 operating system.[[File:Close button with wxpython in windows 10.png|thumb|Close button with wxPython shown on Windows 10]]
This is another example of the wxPython Close Button with wxPython GUI display show in Windows 10 operating system.[[File:Close button with wxpython in windows 10.png|thumb|Close button with wxPython shown on Windows 10]]


<source lang="python3">
<syntaxhighlight lang="python3">
import wx
import wx


Line 82: Line 80:
if __name__ == "__main__":
if __name__ == "__main__":
     main()   
     main()   
</source>
</syntaxhighlight>


==License==
==License==
Being a wrapper, wxPython uses the same [[Free software license|free software license]] used by [[Software:WxWidgets|wxWidgets]] ([[Software:WxWidgets#License|wxWindows License]])<ref>{{cite web |title=Copyright notice |url=http://docs.wxwidgets.org/stable/wx_copyrightnotice.html |access-date=2009-02-27}}</ref>—which is approved by [[Organization:Free Software Foundation|Free Software Foundation]] and [[Organization:Open Source Initiative|Open Source Initiative]].
Being a wrapper, wxPython uses the same [[Free software license|free software license]] used by [[Software:WxWidgets|wxWidgets]] ([[Software:WxWidgets#License|wxWindows License]])<ref>{{cite web |title=Copyright notice |url=http://docs.wxwidgets.org/stable/wx_copyrightnotice.html |access-date=2009-02-27 |archive-date=2009-02-16 |archive-url=https://web.archive.org/web/20090216025901/http://docs.wxwidgets.org/stable/wx_copyrightnotice.html |url-status=dead }}</ref>—which is approved by [[Organization:Free Software Foundation|Free Software Foundation]] and [[Organization:Open Source Initiative|Open Source Initiative]].


== Applications developed with wxPython ==
== Applications developed with wxPython ==
* Chandler, a [[Personal information management|personal information]] manager
* Chandler, a [[Personal information management|personal information]] manager
* [[Software:Dropbox (service)|Dropbox]], [[Software:Desktop environment|desktop]] client for the Dropbox [[Cloud computing|cloud-based]] storage<ref>{{cite web|title=6 lessons from Dropbox one million files saved every 15 minutes|URL=http://highscalability.com/blog/2011/3/14/6-lessons-from-dropbox-one-million-files-saved-every-15-minu.html}}</ref>
* [[Software:Dropbox (service)|Dropbox]], [[Software:Desktop environment|desktop]] client for the Dropbox [[Cloud computing|cloud-based]] storage<ref>{{cite web|title=6 lessons from Dropbox one million files saved every 15 minutes|date=14 March 2011 |url=http://highscalability.com/blog/2011/3/14/6-lessons-from-dropbox-one-million-files-saved-every-15-minu.html}}</ref>
* [[Software:Editra|Editra]], a [[Cross-platform software|multi-platform]] [[Software:Text editor|text editor]]
* [[Software:Editra|Editra]], a [[Cross-platform software|multi-platform]] [[Software:Text editor|text editor]]
* [[Software:Google Drive|Google Drive]], desktop client for the Google cloud-based storage system<ref>{{cite web|title=Open source components and licenses|url=https://support.google.com/drive/bin/answer.py?hl=en&answer=1716931&p=settings_licenses|publisher=Google|access-date=28 January 2013}}</ref>
* [[Software:Google Drive|Google Drive]], desktop client for the Google cloud-based storage system<ref>{{cite web|title=Open source components and licenses|url=https://support.google.com/drive/bin/answer.py?hl=en&answer=1716931&p=settings_licenses|publisher=Google Inc.|access-date=28 January 2013}}</ref>
* [[Software:GRASS GIS|GRASS GIS]], a free, [[Open source|open source]] [[Geographic information system|geographical information system]]
* [[Software:GRASS GIS|GRASS GIS]], a free, [[Open source|open source]] [[Geographic information system|geographical information system]]
* [[Software:Métamorphose (renamer)|Métamorphose]], a [[Software:Batch processing|batch]] renamer
* [[Software:Métamorphose (renamer)|Métamorphose]], a [[Software:Batch processing|batch]] renamer
Line 134: Line 132:


==External links==
==External links==
* {{Official website|http://wxpython.org/}}
*[https://coderslegacy.com/wxpython-tutorial/ wxPython Widget Tutorial Series]
*[https://coderslegacy.com/wxpython-tutorial/ wxPython Widget Tutorial Series]
* [http://wiki.wxpython.org/ProjectPhoenix Project Phoenix main page]
* [http://wiki.wxpython.org/ProjectPhoenix Project Phoenix main page]

Latest revision as of 23:07, 7 February 2026

WxPython
Developer(s)Robin Dunn
Harri Pasanen
Initial release1998; 28 years ago (1998)
Stable release
4.2.2[1] / September 11, 2024; 17 months ago (2024-09-11)
Written inC++ / Python
Operating systemCross-platform
LicensewxWindows License
Websitewxpython.org

wxPython is a wrapper for the cross-platform GUI API (often referred to as a "toolkit") 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 application to be deployed on HP-UX systems but also run Windows 3.1 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.[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.[3]

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.[2]

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.[4] The project is a new implementation of wxPython, focused on improving speed, maintainability and extensibility. Like the previous version of wxPython, it wraps the wxWidgets C++ toolkit and provides access to the user interface portions of the wxWidgets API.[5]

With the release of 4.0.0a1 wxPython in 2017, the Project Phoenix version became the official version.[6] wxPython 4.x is the current version being developed as of June 2022.[7]

Use

wxPython enables Python to be used for cross-platform GUI 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 the wxPython Close Button with wxPython GUI display show in Windows 10 operating system.

Close button with wxPython shown on Windows 10
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 license used by wxWidgets (wxWindows License)[8]—which is approved by Free Software Foundation and Open Source Initiative.

Applications developed with wxPython

References

Citations

Sources

  • Rappin, Noel; Dunn, Robin (March 1, 2006). wxPython in Action. Greenwich: Manning Publications. p. 552. ISBN 978-1-932394-62-7. 

Further reading

  • Precord, Cody (December 2010). wxPython 2.8 Application Development Cookbook. Greenwich: Packt Publishing. pp. 308. ISBN 978-1-84951-178-0.