wxPython's Project Phoenix. A new implementation of wxPython, better, stronger, faster than he was before.

Overview

wxPython Project Phoenix

demo/bitmaps/splash.png

Introduction

Welcome to wxPython's Project Phoenix! Phoenix is the improved next-generation wxPython, "better, stronger, faster than he was before." This new implementation is focused on improving speed, maintainability and extensibility. Just like "Classic" wxPython, Phoenix wraps the wxWidgets C++ toolkit and provides access to the user interface portions of the wxWidgets API, enabling Python applications to have a native GUI on Windows, Macs or Unix systems, with a native look and feel and requiring very little (if any) platform specific code.

Note

This document is primarily intended for those who will be working on wxPython, or at least building with the source code fetched directly from GitHub. If that's not you then please refer to the instructions at the wxPython website about how to get the current release of wxPython for your platform and chosen Python environment.

How to build wxPython Phoenix

First of all, this README is intended primarily for those who want to build wxPython from a workspace checked out from the wxPython Phoenix repository. If you are not making changes to wxPython, or needing to build it for some unsupported compiler or some other hardware architecture, then you probably do not need to put yourself through the pain for building in this way. It's a complicated build, and can sometimes be confusing even for the experts. Instead, if the binaries available at PyPI are not what you need then you can use pip to build from the released source archives, or from the source archives created in the pre-release snapshot builds. See the notes about it at:

Next, review the section below about prerequisites.

All aspects of the wxPython Phoenix build are managed through a series of commands provided by the build.py script. There is also a setup.py script available for those who are used to the standard distutils or setuptools types of builds. The setup.py script assumes that all of the code generation steps have already been performed, and so it is suitable for use when building from a source snapshot tarball or when using easy_install or pip. The setup.py script will delegate to build.py for the actual build, and build.py will delegate to setup.py when doing setuptoolsy things like performing an install or building a wheel.

Using the build.py script allows for greater control over the build process than setup.py does, including commands for performing the various code-generation steps. So developers working on Phoenix itself or building from a Git checkout, instead of a source snapshot tarball, should be using the build.py script. The build.py script provides a fairly simple command-line interface consisting of commands and options. To see the full list run python build.py --help. The most important commands are listed below.

Windows Users NOTE: If you are building Phoenix on Windows and have a non-English language installation of Microsoft Visual Studio then you may need to set the code page in your console window in order to avoid Unicode decoding errors. For example:

chcp 1252
python build.py 
  ...

 

In addition, some tasks within the build currently expect to be able to use Cygwin on Windows (https://www.cygwin.com/) to do its work. If you have Cygwin installed in one of the default locations (c:\cygwin or c:\cygwin64) then all is well. If you have it installed somewhere else then you can set CYGWIN_BASE in the environment and the build tool will use that for the base dir.

On the other hand, if you just want to do a standard setuptools-style build using setup.py and are using a full source tarball, then you can stop reading at this point. If you want to build from a source repository checkout, or need to make changes and/or to regenerate some of the generated source files, then please continue reading.

Building wxWidgets

Since build.py will, by default, build both wxWidgets and Phoenix you will need the wxWidgets code as well. The source tarballs already include both wxWidgets and the Phoenix source code, so if you are getting your copy of the source code that way then you are all set. If you are fetching it from GitHub you will need to do an additional step. The git repository is set up to bring in the wxWidgets code as a git "submodule" so after cloning the Phoenix repository, you can get the wxWidgets source with these commands:

$ git submodule update --init --recursive

This will clone the wxWidgets repo into: Phoenix/ext/wxWidgets. Once the submodule is updated, the build script should be able to build wxWidgets.

If you would rather use an already built and installed wxWidgets then that is possible as well by changing some options, see python build.py --help for details. However be aware that doing so will require a wxWidgets that is very close to the same age as the Phoenix code, at least for the unreleased preview snapshots. In other words, the wxWidgets build should use code from the wxWidgets source repository within a few days of when the Phoenix code was checked out. Currently the master branch of Phoenix is tracking the master branch of wxWidgets.

On the other hand, it is probably best to just let wxPython build and bundle wxWidgets. The build tools will by default build wxWidgets in a way that allows it to be bundled with the wxPython extension modules as part of the wxPython package, meaning it can peacefully coexist with any wxWidgets libraries you may already have installed. This bundling of the wx shared libraries works on Windows, OSX and Linux, and probably any other unix-like system using shared libraries based on the ELF standard. The libraries are built in such a way that they are relocatable, meaning that they do not have to be in a fixed location on the filesystem in order to be found by the wxPython extension modules. This also means that you can do things like use pip to install a wxPython wheel in one or more virtual environments, move the wx package to a versioned folder, or even move it into your own project if desired, all without needing to rebuild the binaries. (Assuming that compatible Pythons are being used in all cases of course.)

The build phase of the build.py script will copy the results of the wxWidgets and Phoenix builds into the wx folder in the Phoenix source tree. This will allow you to run and test Phoenix directly from the source tree without installing it, if desired. You just need to set PYTHONPATH appropriately, or you can use python setup.py develop or pip install -e . to install an .egg-link file in your current Python site-packages folder that will point to the folder where you built wxPython Phoenix. When you are finished testing you can then use the install or one of the bdist commands like you normally would for other Python packages.

Important build.py commands

The following build.py commands are required to be able to build Phoenix from scratch. In other words, from a pristine source tree with none of the generated code present yet. They can be run individually or you can specify all of them on a single command line, in the order given. Once a command has succeeded in one run of build.py there is no need to run that command again in a later run, unless you've changed something which that command has the responsibility to process. Many of the commands require the results of the earlier commands, so at least the first time you run the build you will need to use all 4 of the commands (or their equivalents for composite commands) in the given order.

  • dox: Builds the XML files from the wxWidgets documentation source, which will be used as input for the etg command.
  • etg: Extracts information from the dox XML files, runs hand-written tweaker code on the extracted data structures, and runs various generators on the result to produce code for the next steps. The code being run for each item in this step is located in the etg folder in the Phoenix source tree.
  • sip: This command processes the files generated in the etg command and produces the C++ code that will become the Python extension modules for wxPython Phoenix.
  • build: Build both wxWidgets and wxPython. There are additional commands if you want to build just one or the other. The results will be put in the Phoenix/wx folder, and can be used from there without installation if desired, by setting PYTHONPATH so the Phoenix/wx package dir is found by Python.

Some other useful commands and options are:

  • clean: Clean up the build products produced by prior runs of build.py. There are additional clean commands that will let you clean up just portions of the build if needed.

  • touch: Updates the timestamp on all of the etg scripts, so they will be forced to be run in the next build. This is useful when a change has been made to the wxWidgets documentation that needs to be propagated through the build since the etg command doesn't yet do full dependency checking of the input.

  • M.N: This is the Major.Minor version number of the Python that the extension modules will be built for, such as "3.3". This allows you to run build.py with a different Python than what you are building for, which is handy for things like buildbots running in a virtualenv for one Python that need to be able to run builds for other versions too.

    If build.py is not able to find the correct Python given the M.N on the command line then you can specify the full path to the python executable you want to use with the --python option.

  • test: Runs all of Phoenix's unittests.

  • --nodoc: This option turns off the sphinx generator when running the etg scripts. If you don't plan on generating the documentation then this will speed up the processing of the etg command.

Please see the output of python build.py --help for information about commands and options not mentioned here. And, as always, if there is any discrepancy between this document and the source code in the build.py script, then the source code is correct. ;-)

The build.py script will download doxygen, sip and waf for your platform as needed if they are not already in your Phoenix/bin folder. If prebuilt versions of these tools are not available for your platform then build.py will bail out with an error message. To continue with the build you will need to acquire copies of the tool that will work on your platform and can then tell build.py where to find it using an environment variable, as described in the error message.

Example build command-lines

To do a complete build from a totally clean git workspace, you will need to use several of the commands listed above. For example:

python build.py dox etg --nodoc sip build

Subsequent builds can leave out some of the commands if there were no changes which would require those commands to be run again. For example, if you wanted to just rebuild the Phoenix extension modules you could do this:

python build.py build_py

If you've changed one of the etg files and need to regenerate and rebuild the source affected by that change, then you can use a command like this:

python build.py etg --nodoc sip build build_py

Project directory structure

There are a lot of subfolders in this directory, here is a brief explanation to help a newbie find their way around.

  • build: Intermediate files produced by the build process are stored here. This folder should not be committed to a source repository.

  • buildtools: This is a Python package containing modules that are used from build.py and setup.py and which assist with configuring and running the build.

  • etg: This is where the "Extractor-Tweaker-Generator" scripts are stored. These scripts are invoked by the build and they will read the XML files produced by Doxygen and will produce interface definition files for SIP.

  • etgtools: This Python package contains modules which assist with the parsing of the XML files, tweaking the collection of objects produced by the parser, and also the backend generation of code or documentation.

  • ext: This folder holds the source for external projects used by Phoenix, (currently just wxWidgets) as git submodules. This allows Phoenix to use a specific revision of the code in the other projects and not depend on the developer fetching the correct version of the code on their own.

    When you first checkout the Phoenix source using git you will need to tell git to also fetch the submodules, like this:

    cd Phoenix
    git submodule init
    git submodule update --recursive
    
  • sip/gen: The code (.sip files) produced by the ETG scripts is placed in this folder.

  • sip/cpp: The code produced when running SIP is put in this folder. It will be C++ source and header files, and also some extra files with information about the source files produced, so the build knows what files to compile.

  • sip/siplib: This is a copy of the SIP runtime library. We have our own copy so it can be included with the wxPython build as an extension module with a unique name (wx.siplib) and to not require a runtime dependency on SIP being installed on the target system. 3rd party extensions that want to integrate with wxPython should ensure that the sip.h they #include is the one in this folder.

  • src: This folder is for any other source code (SIP, C++, Python, or anything else) that is edited by hand instead of being generated by some tool.

  • wx: This is the top of the wxPython package. For an in-place build the extension modules and any associated files will be put into this folder. Subfolders contain pure-python subpackages of the wx package, such as wx.lib, etc.

Naming of files

To help keep things a little easier when looking for things that need to be worked on, the file names in the Phoenix project will mirror the names of the files in the wxWidgets interface headers folder. For example, if there is a interface/wx/FOO.h and we are processing the XML produced for that file then the ETG script for the classes and other items will be named etg/FOO.py and it will produce sip/gen/FOO.sip, unit tests will be in unittests/test_FOO.py, and so on.

In most cases more than one ETG/SIP file will be used to create a single Python extension module. In those cases there will be one ETG script used to bring all the others together into the single extension module (by using the back-end generator's include feature for example.) The names of those scripts will have a leading underscore, such as etg/_core.py, and all the scripts that are intended to be included in that extension module should specify that name in their MODULE variable.

Prerequisites

The following are some tips about what is required to build Phoenix for yourself. There are likely some other things that may not have been mentioned here, if you find something else that should be mentioned then please submit a PR for updating this document.

Windows

All the source code needed for wxWidgets and wxPython Phoenix are included in the wxWidgets and Phoenix source trees. In addition to a stock Python installation you will also need a copy of Visual Studio 2008 (for Python2.7 compatibility) or Visual Studio 2015 (for Python 3.x support). It should also be possible to build using Mingw32, but there will need to be some changes made to the build scripts to support that.

You may also want to get a copy of the MS SDK in order to have newer definitions of the Windows API. I typically use 7.0 or 7.1 with Visual Studio 2008.

Unfortunately Microsoft no longer distributes Visual Studio 2008. But don't panic! They have recently made available a "Microsoft Visual C++ Compiler for Python 2.7" package, which can also be used for building Phoenix for Python 2.7. Plus it's free! You can get it at: http://www.microsoft.com/en-us/download/details.aspx?id=44266

If you want to build Phoenix with debug info then you will need to first build a debug version of Python, and then use that Python (python_d.exe) to build Phoenix.

Linux

On Ubuntu the following development packages and their dependencies should be installed in order to build Phoenix. Other debian-like distros will probably also have these or similarly named packages available. Extrapolate other package names accordingly for other linux distributions or other unixes.

  • dpkg-dev
  • build-essential
  • python3.7-dev and libpython3.7-dev # use appropriate Python version here
  • freeglut3-dev
  • libgl1-mesa-dev
  • libglu1-mesa-dev
  • libgstreamer-plugins-base1.0-dev
  • libgtk-3-dev
  • libjpeg-dev
  • libnotify-dev
  • libpng-dev
  • libsdl2-dev
  • libsm-dev
  • libtiff-dev
  • libwebkit2gtk-4.0-dev
  • libxtst-dev

If you are building for GTK2 then you'll also need these packages and their dependencies:

  • libgtk2.0-dev
  • libwebkitgtk-dev

If You use a custom built python in a non standard location, You need to compile python with the --enable-shared option.

Mac OSX

Like the Windows platform all the source and libs you need for building Phoenix on OSX are included in the wxWidgets and Phoenix source trees, or by default on the system. In addition you will need to get the Xcode compiler and SDKs, if you don't already have it, from https://developer.apple.com/ (free registration required). You should also install the command line tools for your version of Xcode and OSX. This can usually be done from within Xcode or via a separate installer package.

Also like on Windows, using the same or similar compiler that was used to build Python usually helps things to work better and have a better chance for success. For example, the stock Python 2.7 will try to use "gcc-4.2" when building extensions, but newer versions of Xcode may not have that command available. I am currently using Xcode 7.1.1.

If all else fails it is not too hard to build Python yourself using whatever Xcode you have installed, and then use that Python when building Phoenix.

Help and Helping

Most discussions about Phoenix happen on the wxPython-dev google group (a.k.a. the wxPython-dev mail list.) If you have questions or would like to get involved please subscribe to the group at https://groups.google.com/forum/#!forum/wxpython-dev and join in.

Latest Snapshot Builds

You can find snapshots of the latest wxPython Phoenix build files, including source snapshots, wheels files for Windows and Mac, and etc. at: https://wxpython.org/Phoenix/snapshot-builds/. These files are built at most once per day, on any day that has had a commit to the master branch.

docs/phoenix-fire-md.png

Comments
  • wx.GraphicsPenInfo is missing.

    wx.GraphicsPenInfo is missing.

    OK so I am trying to make a gradient pen and I followed the link located here

    https://wxpython.org/Phoenix/docs/html/wx.GraphicsRenderer.html#wx.GraphicsRenderer.CreatePen

    which brought me to here

    https://wxpython.org/Phoenix/docs/html/wx.GraphicsPenInfo.html#wx-graphicspeninfo

    as outlined in the example

    ctx = wx.GraphicsContext.Create(dc)
    pen = ctx.CreatePen(wx.GraphicsPenInfo(wx.BLUE).Width(1.25).Style(wx.PENSTYLE_DOT))
    ctx.SetPen(pen)
    

    you can see wx..GraphicsPenInfo being used in the example This object does not exist in the wx module. not in 3.0.2 or in 4.0.7post1.

    opened by kdschlosser 62
  • A few rendering problems with alpha channel

    A few rendering problems with alpha channel

    Operating system:

    Windows 7 x64 SP1
    

    wxPython version & source:

    4.0.7.post1 msw (phoenix) wxWidgets 3.0.5
    pypi
    

    Python version & source:

    3.7.5 Stackless 3.7 (tags/v3.7.5-slp:f7925f2a02, Oct 20 2019, 15:28:53) [MSC v.1916 64 bit (AMD64)] (cpython)
    https://github.com/stackless-dev/stackless
    

    Description of the problem: There are a few issues I am running into. I have attached an image to show the problems that are taking place.

    • I am not able to draw any text that has an alpha channel. Well let me correct that. It draws the text, however the alpha channel is not used. You can see this in the attached image. Every color used in that image has an alpha channel. I did a screen capture with the frame placed over a white background so you would be able to see the problems. The white is not part of the example code below.

      I have tried with GCDC.DrawText and also GraphicsContext.DrawText and neither of them support an alpha channel.

    • I am drawing a simple drop shadow using wx.Region to subtract the actual text from the bitmap where the shadow is drawn. The appearance starts out fine but as the text continues there ends up being areas that get improperly clipped, this issue gets worse as the text continues. you can see this problem in 1, 2 and 3 of the attached image.

      I have studied this fairly closely and if you look at the text you will see the text being antialiased to black. I am not sure why this is taking place, I have set the background text dolor to wx.TransparentColour

    • I may have mentioned this before, I do not remember if I have or not. This problem only becomes evident when using an alpha channel. When rendering a rectangle the filled in area of the rectangle can be seen under the outline. This can be seen in the image item 5, you may need to zoom into the image to see it better.

      If you look at item 4 you do not see this issue because the filled in area has an alpha channel of 0.

      There needs to be some kind of a check to see if the pen has an alpha level is 0 < alpha < 255 and if that is the case then the filled in area needs to be adjusted to be smaller. I am sure this same issue also exists with the other functions as well. There is also another issue regarding the use of these types of functions. If you take this example

      MemoryDC.SetPen(wx.Pen(wx.Colour(0, 0, 255, 255), 4))
      MemoryDC.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 255))
      MemoryDC.DrawRectangle(0, 0, 150, 150)
      

      The resulting rectangle is NOT 150, 150. it ends up being 154, 154. I do know this problem has existed for a very long time and to correct it would cause a lot of problems for projects already using wxPython. Perhaps the addition of a global flag that can be set that would tell wxPython to render to exact sizes.

    I may be doing something incorrect, tho I do not think that I am.

    image

    Here is the frame as seen without the white behind it.

    image

    This example script will ONLY run on Windows.

    import wx
    import ctypes
    
    from ctypes.wintypes import LONG, HWND, INT, HDC, HGDIOBJ, BOOL, DWORD
    
    UBYTE = ctypes.c_ubyte
    GWL_EXSTYLE = -20
    WS_EX_LAYERED = 0x00080000
    ULW_ALPHA = 0x00000002
    AC_SRC_OVER = 0x00000000
    AC_SRC_ALPHA = 0x00000001
    
    class POINT(ctypes.Structure):
        _fields_ = [
            ('x', LONG),
            ('y', LONG)
        ]
    
    class SIZE(ctypes.Structure):
        _fields_ = [
            ('cx', LONG),
            ('cy', LONG)
        ]
    
    class BLENDFUNCTION(ctypes.Structure):
        _fields_ = [
            ('BlendOp', UBYTE),
            ('BlendFlags', UBYTE),
            ('SourceConstantAlpha', UBYTE),
            ('AlphaFormat', UBYTE)
        ]
    
    user32 = ctypes.windll.User32
    gdi32 = ctypes.windll.Gdi32
    
    # LONG GetWindowLongW(
    #   HWND hWnd,
    #   int  nIndex
    # )
    
    GetWindowLongW = user32.GetWindowLongW
    GetWindowLongW.restype = LONG
    
    # LONG SetWindowLongW(
    #   HWND hWnd,
    #   int  nIndex,
    #   LONG dwNewLong
    # );
    SetWindowLongW = user32.SetWindowLongW
    SetWindowLongW.restype = LONG
    
    # HDC GetDC(
    #   HWND hWnd
    # );
    GetDC = user32.GetDC
    GetDC.restype = HDC
    
    # HWND GetDesktopWindow();
    GetDesktopWindow = user32.GetDesktopWindow
    GetDesktopWindow.restype = HWND
    
    # HDC CreateCompatibleDC(
    #   HDC hdc
    # );
    CreateCompatibleDC = gdi32.CreateCompatibleDC
    CreateCompatibleDC.restype = HDC
    
    # HGDIOBJ SelectObject(
    #   HDC     hdc,
    #   HGDIOBJ h
    # );
    SelectObject = gdi32.SelectObject
    SelectObject.restype = HGDIOBJ
    
    # BOOL UpdateLayeredWindow(
    #   HWND          hWnd,
    #   HDC           hdcDst,
    #   POINT         *pptDst,
    #   SIZE          *psize,
    #   HDC           hdcSrc,
    #   POINT         *pptSrc,
    #   COLORREF      crKey,
    #   BLENDFUNCTION *pblend,
    #   DWORD         dwFlags
    # );
    UpdateLayeredWindow = user32.UpdateLayeredWindow
    UpdateLayeredWindow.restype = BOOL
    
    COLORREF = DWORD
    
    def RGB(r, g, b):
        return COLORREF(r | (g << 8) | (b << 16))
    
    
    class Frame(wx.Frame):
    
        def __init__(self):
            wx.Frame.__init__(
                self,
                None,
                -1,
                style=(
                    wx.FRAME_SHAPED |
                    wx.NO_BORDER |
                    wx.FRAME_NO_TASKBAR |
                    wx.STAY_ON_TOP
                ),
                size=(600, 300),
                pos=(400, 400)
            )
            self.Bind(wx.EVT_ERASE_BACKGROUND, lambda x: None)
            self.Bind(wx.EVT_PAINT, self.OnPaint)
    
        def OnPaint(self, evt):
            width, height = self.GetClientSize()
    
            text = 'Alpha test'
            font = self.GetFont()
            font.SetPointSize(font.GetPointSize() + 16)
            font = font.MakeBold()
            font = font.MakeItalic()
    
            bmp = wx.Bitmap(width, height)
            bmp2 = wx.Bitmap(width, height)
            bmp3 = wx.Bitmap(width, height)
    
            dc = wx.MemoryDC()
    
            dc.SelectObject(bmp3)
            dc.SetTextForeground(wx.Colour(255, 255, 255, 255))
            dc.SetFont(font)
    
            text_width, text_height = dc.GetFullTextExtent(text)[:2]
    
            text_x = (width / 2) - (text_width / 2)
            text_y = (height / 2) - (text_height / 2)
    
            dc.DrawText(text, text_x, text_y)
    
            dc.SelectObject(bmp2)
    
            dc.SetPen(wx.Pen(wx.Colour(255, 255, 255, 255), 6))
            dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 255)))
            dc.DrawRoundedRectangle(103, 78, width - 200 - 3, height - 150 - 3, 5)
    
            dc.SelectObject(bmp)
            gc = wx.GraphicsContext.Create(dc)
            gcdc = wx.GCDC(gc)
    
    
            region1 = wx.Region(bmp)
            region2 = wx.Region(bmp2, wx.Colour(0, 0, 0, 0))
            region1.Subtract(region2)
    
            gcdc.SetDeviceClippingRegion(region1)
            gc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 140), 6))
            gc.SetBrush(wx.Brush(wx.Colour(0, 0, 0, 150)))
            gc.DrawRoundedRectangle(3, 3, width-6, height-6, 5)
    
            gcdc.DestroyClippingRegion()
    
            gc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 120), 6))
            gc.SetBrush(wx.Brush(wx.Colour(0, 0, 0, 0)))
            gc.DrawRoundedRectangle(103, 78, width - 200 - 3, height - 150 - 3, 5)
    
            region1 = wx.Region(bmp)
            region2 = wx.Region(bmp3, wx.Colour(0, 0, 0, 0))
            region1.Subtract(region2)
            gcdc.SetDeviceClippingRegion(region1)
            gcdc.SetTextForeground(wx.Colour(0, 0, 0, 130))
            gcdc.SetTextBackground(wx.TransparentColour)
            gcdc.SetFont(font)
            gc.DrawText(text, text_x - 4, text_y - 4)
            gcdc.DestroyClippingRegion()
    
            gcdc.SetTextForeground(wx.Colour(0, 255, 0, 150))
            gcdc.SetTextBackground(wx.TransparentColour)
            gc.DrawText(text, text_x, text_y)
    
            gcdc.Destroy()
            del gcdc
    
            dc.SelectObject(wx.NullBitmap)
            dc.Destroy()
            del dc
    
            region = wx.Region(bmp)
            self.SetShape(region)
    
            self.draw_alpha(bmp)
    
        def draw_alpha(self, bmp):
            hndl = self.GetHandle()
            style = GetWindowLongW(HWND(hndl), INT(GWL_EXSTYLE))
            SetWindowLongW(HWND(hndl), INT(GWL_EXSTYLE), LONG(style | WS_EX_LAYERED))
    
            hdcDst = GetDC(GetDesktopWindow())
            hdcSrc = CreateCompatibleDC(HDC(hdcDst))
    
            pptDst = POINT(*self.GetPosition())
            psize = SIZE(*self.GetClientSize())
            pptSrc = POINT(0, 0)
            crKey = RGB(0, 0, 0)
    
            pblend = BLENDFUNCTION(AC_SRC_OVER, 0, 255, AC_SRC_ALPHA)
    
            SelectObject(HDC(hdcSrc), HGDIOBJ(bmp.GetHandle()))
            UpdateLayeredWindow(
                HWND(hndl),
                HDC(hdcDst),
                ctypes.byref(pptDst),
                ctypes.byref(psize),
                HDC(hdcSrc),
                ctypes.byref(pptSrc),
                crKey,
                ctypes.byref(pblend),
                DWORD(ULW_ALPHA)
            )
    
    
    app = wx.App()
    
    frame = Frame()
    frame.Show()
    app.MainLoop()
    

    @Metallicow Here is an example how how to overcome the alpha issue with shaped frames, this example only works on Windows. I would think that there are similiar API functions for OSX and Linux that can be used to achieve the same results

    opened by kdschlosser 60
  • Push 3.10 wheels to Pypi

    Push 3.10 wheels to Pypi

    Operating system: Windows 10 21H1 (x64) build 19043.1586

    wxPython version & source:
    Pypi (attempting) Python version & source: Stock Description of the problem: WXPython 4.11 doesn't install on Windows in Python 3.10. This seems to have been fixed in #2017, but the wheels haven't been pushed yet. It would be great if this could be done.

    opened by TheQuinbox 46
  • Refactor ThumbnailCtrl, create stand-alone ScrolledThumbnail widget

    Refactor ThumbnailCtrl, create stand-alone ScrolledThumbnail widget

    ThumbnailCtrl is more of a image browser demo application than a widget, in that it reads files from a directory, selects which files to display, deletes files, displays the source directory path in a text ctrl, etc. This makes it unlikely that it could be used in any other application, for example, to provide thumbnails of files with different file types than the ones hard-coded in the class.

    ThumbnailCtrl delegates most of its operations to ScrolledThumbnail which actually implements a scrolled window of thumbnails, a Thumb class, which contains information about a thumbnail, and an ImageHandler class, which manipulates images. There was poor isolation of functionality between these classes, violating object-oriented design, with one class making changes to the internal data of another class. Additionally, there was substantial non-functional code, as well as code which did not function correctly.

    This refactoring maintains the functionality and interfaces of ThumbnailCtrl, except for those which were unused. Existing uses of the thumbnailctrl package should work without modification. A new package, scrolledthumbnail, contains the functionality for a scrolled window containing thumbnails, an extendable Thumb class, and image manipulation classes. The scrolledthumbnail package can be used in other applications, independent of the ThumbnailCtrl class, and without the functional restrictions of that application.

    Detailed changes:

    ThumbnailCtrl.py (demo program):

    • Always import from wx.lib.agw
    • Optional code to use PIL instead of native image handling
    • Add setting for thumbnail width and height
    • Increase size of demo window

    thumbnailctrl.py:

    • Move Thumb, ScrolledThumbnail, ImageHandler to scrolledthumbnail.py
    • Remove EVT_THUMBNAILS_CAPTION_CHANGED (unused)
    • Add EVT_THUMBNAILS_CHAR to respond to keystrokes
    • Remove image processing code
    • Add scrolling dialog for delete files
    • Move directory processing from ScrolledThumbnail
    • Move file delete processing from ScrolledThumbnail
    • List all files to be deleted in scrolling dialog
    • Remove unused or unimplemented methods and options

    scrolledthumbnail.py:

    • Move Thumb, ScrolledThumbnail, ImageHander classes from thumbnailctrl.py
    • Add documentation for ScrolledThumbnail widget
    • Add example program which does not use ThumbnailCtrl
    • New EVT_THUMBNAILS_CHAR event for key press
    • Remove unused options and dead code
    • Add Rotate() to PILImageHandler and NativeImageHandler
    • Throw event EVT_THUMBNAILS_CHAR for keystroke on thumbnail
    • Fix failure to rotate images correctly
    • Redisplay window when thumb size changed
    • Simplify logic
    • Remove popup dialog when rotating images

    Fixes #NNNN

    opened by eagerm 31
  • Application Crash

    Application Crash

    Operating system: wxPython version & source: 4.0.7.post1 msw (phoenix) wxWidgets 3.0.5 (pypi) Python version & source: 3.7.5 Stackless 3.7 (tags/v3.7.5-slp:f7925f2a02, Oct 20 2019, 15:28:53) [MSC v.1916 64 bit (AMD64)]

    Description of the problem: I am getting an application crash I am not sure how I would recreate this application crash it appears to be an internal issue. Here is the information I do have on the application crash on the off chance it may help.

    Problem signature:
      Problem Event Name:	APPCRASH
      Application Name:	python.exe
      Application Version:	3.7.5150.1013
      Application Timestamp:	5dac6199
      Fault Module Name:	wxmsw30u_core_vc140_x64.dll
      Fault Module Version:	3.0.5.0
      Fault Module Timestamp:	5db79a16
      Exception Code:	c0000005
      Exception Offset:	00000000000394a0
      OS Version:	6.1.7601.2.1.0.256.1
      Locale ID:	1033
      Additional Information 1:	705e
      Additional Information 2:	705e6db06b5e83c9a4a9aa840488fd7b
      Additional Information 3:	c57a
      Additional Information 4:	c57aeafb8b973b3f380f9b5f6b3079f3
    

    Here is the stack trace

    
    wxmsw30u_core_vc140_x64.dll!wxGDIObject::IsOk() Line 49
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\include\wx\gdiobj.h(49)
    wxmsw30u_core_vc140_x64.dll!wxMSWDCImpl::SetPen(const wxPen & pen={...}) Line 1666
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\src\msw\dc.cpp(1666)
    [Inline Frame] wxmsw30u_core_vc140_x64.dll!wxMemoryDCImpl::Init() Line 72
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\src\msw\dcmemory.cpp(72)
    wxmsw30u_core_vc140_x64.dll!wxMemoryDCImpl::wxMemoryDCImpl(wxMemoryDC * owner) Line 46
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\src\msw\dcmemory.cpp(46)
    wxmsw30u_core_vc140_x64.dll!wxNativeDCFactory::CreateMemoryDC(wxMemoryDC * owner=0x00000000026ea7e0) Line 156
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\src\common\dcbase.cpp(156)
    wxmsw30u_core_vc140_x64.dll!wxMemoryDC::wxMemoryDC() Line 221
    	at c:\projects\bb2\dist-win64-py37\build\ext\wxwidgets\src\common\dcbase.cpp(221)
    _core.cp37-win_amd64.pyd!000007fed342316d()
    siplib.cp37-win_amd64.pyd!000007fef7fe526f()
    python37.dll!000007fedef5bb3a()
    python37.dll!000007fedef5b858()
    python37.dll!000007fedef44090()
    python37.dll!000007fedef44c10()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef44e21()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef44e21()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef44e21()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef4620b()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef44e21()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef44e21()
    python37.dll!000007fedef3d865()
    python37.dll!000007fedef3d8d5()
    python37.dll!000007fedef2f3e0()
    python37.dll!000007fedef2efe9()
    python37.dll!000007fedef2ef0c()
    python37.dll!000007fedef2ee23()
    python37.dll!000007fedef2eeb8()
    python37.dll!000007fedef3dfd7()
    python37.dll!000007fedef3d984()
    python37.dll!000007fedef3d7a6()
    python37.dll!000007fedef30677()
    python37.dll!000007fedf02d84a()
    python37.dll!000007fedf0ceaae()
    ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void * __ptr64)>()
    kernel32.dll!BaseThreadInitThunk()
    ntdll.dll!RtlUserThreadStart()
    

    And here is the minidump without the heap.

    debug.zip

    If there is anything else I can provide let me know.

    opened by kdschlosser 29
  • ClientDC not working on Wayland

    ClientDC not working on Wayland

    Operating system: Ubuntu 17.10 wxPython version: 4.0.1 Stock or custom build: Stock Python version: 3.6.3 Stock or custom build: Stock

    Description of the problem: When using ClientDC, the screen content is not updated. It will only update with a large delay or on resizing etc. As workaround, an additional Refresh() solves the problem. Switching from Wayland to X also solves the problem.

    The oxboxes Ubuntu 17.10 VM is fine for reproducing the issue.

    For verification, try the ScrolledWindow.py demo with BUFFERED = False. On Python 2.7 / wxPython 3.0.2 (gtk3.0) everything works fine. On Python 3.6 / wxPython 4.0.1, when drawing with the mouse, the screen is not updated before it is resized.

    This was reported on wxpython-dev by Riccardo Borgani who has problems with the Matplotlib WxAgg backend: https://groups.google.com/d/msg/wxpython-dev/8E4jtTjEmjI/5H3CboaNAAAJ

    When trying with Python 2.7 and wxPython 3.0.2 (gtk3.0) his example worked as expected.

    opened by DietmarSchwertberger 24
  • Drawing gradients question

    Drawing gradients question

    OK I am trying to draw a rounded rectangle that has a gradient inside of it. the rectangle to 300x150 and the gradient is going to go from red to transparent. I have attached an image that shows what I am looking to do. For the life of me I cannot figure out ho to go about making the gradient. I tried DC.GradientFillConcentric and this only drew a gradient circle in the middle. The name of this function is misleading. It should be GradientCircleConcentric not fill. fill leads you to believe that it fills the whole rect not just making a circle. I would have thought there would be a simple method that can be used maybe a blending mode and making a really wide line. IDK I can't find an easy way, I also tried googling for an example and came up with a single mailing list entry for someone asking the exact same thing. they were given a link to wxWidgets API docs specifically the wxGraphicsContext portion of it. and the user only said "It works!" and didn't provide any kind of an example. So I am going to make the assumption that what I need is in there I am not sure how to go about writing the code.

    If someone can shed some light on this for me it would be appreciated. Thank you for any assistance you can offer. Kevin.

    example_rectangle

    opened by kdschlosser 22
  • Fix building with SIP 4.19.14

    Fix building with SIP 4.19.14

    This commit fixes building Phoenix with SIP 4.19.14. One of the main changes in this release was to add SIP_OVERRIDE, which adds the C++ override keyword to method declarations that are intended to override the C++ class that SIP is wrapping. Unfortunately, this exposed a few bugs which caused compile errors. Most of the fixes are to the interface headers. The two trickier fixes were to wxFileConfig and wxRendererNative.

    For wxFileConfig, the Save method's second parameter, 'conv', had been ignored. This caused the override check to fail. This was resolved by ignoring the auto-generated Save() and adding a manually generated one without the second parameter.

    For wxRendererNative, the DrawTitleBarBitmap method is actually pure virtual in the subclass, so the fix was to ignore it there. In the subclass wxDelegateRendererNative, it is concrete, but only on certain platforms. This was fixed in a similar way by adding a manually generated method that will do the right thing on the platforms that support it.

    There is one other fix required for SIP 4.19.14: SIP has now added its own wrapper for size_t, so it required removing the one in wacky_ints. This change was omitted for now because it should probably wait until Phoenix officially moves to 4.19.14.

    opened by swt2c 22
  • Datetime.strptime error in wxPython why

    Datetime.strptime error in wxPython why

    # coding=utf-8
    import wx
    import sys
    import datetime
    
    if __name__ == "__main__":
        print("wxpython version:", wx.version())
        print("Python version:", sys.version)
        print("Run before wx:", datetime.datetime.strptime("02/02/2020", '%d/%m/%Y'), "normal")
        app = wx.App()
        print("Run after wx:", datetime.datetime.strptime("02/02/2020", '%d/%m/%Y'), "error")
    
        # frame = MainFrame()
        # frame.SetSize(0, 0, 1200, 750)
        # frame.Center()
        # frame.Show()
        app.MainLoop()
    
    wxpython version: 4.1.0 msw (phoenix) wxWidgets 3.1.4
    Python version: 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
    Run before wx: 2020-02-02 00:00:00 normal
    Traceback (most recent call last):
      File "K:/test/a.py", line 14, in <module>
        print("Run after wx:", datetime.datetime.strptime("02/02/2020", '%d/%m/%Y'), "error")
      File "C:\Program Files\Python36\lib\_strptime.py", line 565, in _strptime_datetime
        tt, fraction = _strptime(data_string, format)
      File "C:\Program Files\Python36\lib\_strptime.py", line 334, in _strptime
        if (_getlang() != locale_time.lang or
      File "C:\Program Files\Python36\lib\_strptime.py", line 31, in _getlang
        return locale.getlocale(locale.LC_TIME)
      File "C:\Program Files\Python36\lib\locale.py", line 581, in getlocale
        return _parse_localename(localename)
      File "C:\Program Files\Python36\lib\locale.py", line 490, in _parse_localename
        raise ValueError('unknown locale: %s' % localename)
    ValueError: unknown locale: zh-CN
    
    opened by wstates 19
  • AGW Slider Widget

    AGW Slider Widget

    I wrote a custom slider widget I thought might be of interest. It handles floats as well as integers, a step or increment can also be supplied. If it is something you might want to add you are more then welcome to. It is currently modeled after the slider in Windows, I can add other OS's into that as well.

    I have attached the script, just run the script and the test program will run displaying an assortment of varying sliders.

    If someone finds a bug please let me know so I can correct it.

    AGWSlider.zip

    opened by kdschlosser 18
  • wxpython installation not working

    wxpython installation not working

    When trying to install wxpython following instructions in travis, it fails in the installation, essentially the following execution fails:

    pip install -U wxpython

    Operating system: Virtual machine in travis wxPython version: latest available in pip Stock or custom build: Python version: 3.6.2 Stock or custom build:

    Description of the problem:

    Essentially when installing wxpython I got the following error

    $ pip install -U wxpython Collecting wxpython Downloading wxPython-4.0.0b1.tar.gz (50.6MB) Requirement already up-to-date: six in /home/travis/virtualenv/python3.6.2/lib/python3.6/site-packages (from wxpython) Building wheels for collected packages: wxpython Running setup.py bdist_wheel for wxpython: started Running setup.py bdist_wheel for wxpython: finished with status 'error' Complete output from command /home/travis/virtualenv/python3.6.2/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-2evi4tjt/wxpython/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmp98rhij4_pip-wheel- --python-tag cp36: running bdist_wheel running build WARNING: Building this way assumes that all generated files have been generated already. If that is not the case then use build.py directly to generate the source and perform the build stage. You can use --skip-build with the bdist_* or install commands to avoid this message and the wxWidgets and Phoenix build steps in the future.

    "/home/travis/virtualenv/python3.6.2/bin/python" -u build.py build Will build using: "/home/travis/virtualenv/python3.6.2/bin/python" 3.6.2 (default, Jul 17 2017, 15:25:33) [GCC 4.8.4] Python's architecture is 64bit cfg.VERSION: 4.0.0b1

    Running command: build Running command: build_wx wxWidgets build options: ['--wxpython', '--unicode'] Configure options: ['--enable-unicode', '--with-opengl', '--enable-sound', '--enable-graphics_ctx', '--enable-mediactrl', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--with-sdl'] /tmp/pip-build-2evi4tjt/wxpython/ext/wxWidgets/configure --enable-unicode --with-opengl --enable-sound --enable-graphics_ctx --enable-mediactrl --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --with-sdl checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for --disable-gui... no checking for --enable-monolithic... no checking for --enable-plugins... no checking for --without-subdirs... no checking for --enable-official_build... no checking for --disable-all-features... no checking for --enable-universal... no checking for --enable-nanox... no checking for --enable-gpe... no checking for toolkit... gtk checking for --with-libpng... yes checking for --with-libjpeg... yes checking for --with-libtiff... yes checking for --without-libjbig... no checking for --without-liblzma... no checking for --with-libxpm... yes checking for --with-libiconv... yes checking for --with-libmspack... no checking for --without-gtkprint... no checking for --with-gnomevfs... no checking for --with-libnotify... yes checking for --with-hildon... no checking for --with-opengl... yes checking for --with-dmalloc... no checking for --with-sdl... yes checking for --with-regex... yes checking for --with-zlib... yes checking for --with-expat... yes checking for --with-macosx-sdk... checking for --with-macosx-version-min... checking for --enable-debug... default checking for --disable-debug_flag... no checking for --enable-debug_info... no checking for --enable-debug_gdb... no checking for --enable-debug_cntxt... no checking for --enable-mem_tracing... no checking for --disable-shared... no checking for --enable-stl... no checking for --enable-std_containers... no checking for --enable-std_iostreams... yes checking for --enable-std_string... yes checking for --enable-std_string_conv_in_wxstring... no checking for --disable-unicode... no checking for --enable-mslu... no checking for --enable-utf8... no checking for --enable-utf8only... no checking for --enable-extended_rtti... no checking for --disable-optimise... no checking for --enable-profile... no checking for --enable-no_rtti... no checking for --enable-no_exceptions... no checking for --enable-permissive... no checking for --enable-no_deps... no checking for --disable-vararg_macros... no checking for --enable-universal_binary... no checking for --enable-macosx_arch... no checking for --enable-compat26... no checking for --disable-compat28... no checking for --disable-rpath... no checking for --enable-objc_uniquifying... no checking for --disable-visibility... no checking for --disable-tls... no checking for --enable-intl... yes checking for --enable-xlocale... yes checking for --enable-config... yes checking for --enable-protocols... yes checking for --enable-ftp... yes checking for --enable-http... yes checking for --enable-fileproto... yes checking for --enable-sockets... yes checking for --enable-ipv6... no checking for --enable-ole... yes checking for --enable-dataobj... yes checking for --enable-ipc... yes checking for --enable-baseevtloop... yes checking for --enable-epollloop... yes checking for --enable-selectloop... yes checking for --enable-any... yes checking for --enable-apple_ieee... yes checking for --enable-arcstream... yes checking for --enable-base64... yes checking for --enable-backtrace... yes checking for --enable-catch_segvs... yes checking for --enable-cmdline... yes checking for --enable-datetime... yes checking for --enable-debugreport... no checking for --enable-dialupman... yes checking for --enable-dynlib... yes checking for --enable-dynamicloader... yes checking for --enable-exceptions... yes checking for --enable-ffile... yes checking for --enable-file... yes checking for --enable-filehistory... yes checking for --enable-filesystem... yes checking for --enable-fontenum... yes checking for --enable-fontmap... yes checking for --enable-fs_archive... yes checking for --enable-fs_inet... yes checking for --enable-fs_zip... yes checking for --enable-fsvolume... yes checking for --enable-fswatcher... yes checking for --enable-geometry... yes checking for --enable-log... yes checking for --enable-longlong... yes checking for --enable-mimetype... yes checking for --enable-printfposparam... yes checking for --enable-snglinst... yes checking for --enable-sound... yes checking for --enable-stdpaths... yes checking for --enable-stopwatch... yes checking for --enable-streams... yes checking for --enable-sysoptions... yes checking for --enable-tarstream... yes checking for --enable-textbuf... yes checking for --enable-textfile... yes checking for --enable-timer... yes checking for --enable-variant... yes checking for --enable-zipstream... yes checking for --enable-url... yes checking for --enable-protocol... yes checking for --enable-protocol_http... yes checking for --enable-protocol_ftp... yes checking for --enable-protocol_file... yes checking for --enable-threads... yes checking for --enable-iniconf... no checking for --enable-regkey... yes checking for --enable-docview... yes checking for --enable-help... yes checking for --enable-mshtmlhelp... yes checking for --enable-html... yes checking for --enable-htmlhelp... yes checking for --enable-xrc... yes checking for --enable-aui... yes checking for --enable-propgrid... yes checking for --enable-ribbon... yes checking for --enable-stc... yes checking for --enable-constraints... yes checking for --enable-loggui... yes checking for --enable-logwin... yes checking for --enable-logdialog... yes checking for --enable-mdi... yes checking for --enable-mdidoc... yes checking for --enable-mediactrl... yes checking for --enable-gstreamer8... no checking for --enable-richtext... yes checking for --enable-postscript... yes checking for --enable-printarch... yes checking for --enable-svg... yes checking for --enable-webkit... yes checking for --enable-webview... yes checking for --enable-graphics_ctx... yes checking for --enable-clipboard... yes checking for --enable-dnd... yes checking for --disable-controls... no checking for --enable-markup... yes checking for --enable-accel... yes checking for --enable-animatectrl... yes checking for --enable-bannerwindow... yes checking for --enable-artstd... yes checking for --enable-arttango... auto checking for --enable-bmpbutton... yes checking for --enable-bmpcombobox... yes checking for --enable-button... yes checking for --enable-calendar... yes checking for --enable-caret... yes checking for --enable-checkbox... yes checking for --enable-checklst... yes checking for --enable-choice... yes checking for --enable-choicebook... yes checking for --enable-collpane... yes checking for --enable-colourpicker... yes checking for --enable-combobox... yes checking for --enable-comboctrl... yes checking for --enable-commandlinkbutton... yes checking for --enable-dataviewctrl... yes checking for --enable-datepick... yes checking for --enable-detect_sm... yes checking for --enable-dirpicker... yes checking for --enable-display... yes checking for --enable-editablebox... yes checking for --enable-filectrl... yes checking for --enable-filepicker... yes checking for --enable-fontpicker... yes checking for --enable-gauge... yes checking for --enable-grid... yes checking for --enable-headerctrl... yes checking for --enable-hyperlink... yes checking for --enable-imaglist... yes checking for --enable-infobar... yes checking for --enable-listbook... yes checking for --enable-listbox... yes checking for --enable-listctrl... yes checking for --enable-notebook... yes checking for --enable-notifmsg... yes checking for --enable-odcombobox... yes checking for --enable-popupwin... yes checking for --enable-prefseditor... yes checking for --enable-radiobox... yes checking for --enable-radiobtn... yes checking for --enable-richmsgdlg... yes checking for --enable-richtooltip... yes checking for --enable-rearrangectrl... yes checking for --enable-sash... yes checking for --enable-scrollbar... yes checking for --enable-searchctrl... yes checking for --enable-slider... yes checking for --enable-spinbtn... yes checking for --enable-spinctrl... yes checking for --enable-splitter... yes checking for --enable-statbmp... yes checking for --enable-statbox... yes checking for --enable-statline... yes checking for --enable-stattext... yes checking for --enable-statusbar... yes checking for --enable-taskbaricon... yes checking for --enable-tbarnative... yes checking for --enable-textctrl... yes checking for --enable-datepick... yes checking for --enable-tipwindow... yes checking for --enable-togglebtn... yes checking for --enable-toolbar... yes checking for --enable-toolbook... yes checking for --enable-treebook... yes checking for --enable-treectrl... yes checking for --enable-treelist... yes checking for --enable-commondlg... yes checking for --enable-aboutdlg... yes checking for --enable-choicedlg... yes checking for --enable-coldlg... yes checking for --enable-filedlg... yes checking for --enable-finddlg... yes checking for --enable-fontdlg... yes checking for --enable-dirdlg... yes checking for --enable-msgdlg... yes checking for --enable-numberdlg... yes checking for --enable-splash... yes checking for --enable-textdlg... yes checking for --enable-tipdlg... yes checking for --enable-progressdlg... yes checking for --enable-wizarddlg... yes checking for --enable-menus... yes checking for --enable-miniframe... yes checking for --enable-tooltips... yes checking for --enable-splines... yes checking for --enable-mousewheel... yes checking for --enable-validators... yes checking for --enable-busyinfo... yes checking for --enable-hotkey... auto checking for --enable-joystick... yes checking for --enable-metafile... auto checking for --enable-dragimage... yes checking for --enable-accessibility... no checking for --enable-uiactionsim... yes checking for --enable-dctransform... yes checking for --enable-webviewwebkit... yes checking for --enable-palette... yes checking for --enable-image... yes checking for --enable-gif... yes checking for --enable-pcx... yes checking for --enable-tga... yes checking for --enable-iff... yes checking for --enable-pnm... yes checking for --enable-xpm... yes checking for --enable-ico_cur... yes checking for --enable-dccache... yes checking for --enable-ps-in-msw... yes checking for --enable-ownerdrawn... yes checking for --enable-uxtheme... yes checking for --enable-wxdib... yes checking for --enable-webviewie... yes checking for --enable-autoidman... no checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether we are using the Intel C compiler... no checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking whether gcc needs -traditional... no checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether we are using the Intel C++ compiler... no checking whether we are using the Sun C++ compiler... no checking for ar... ar checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for langinfo.h... yes checking for wchar.h... yes checking for sys/select.h... yes checking for cxxabi.h... yes checking for an ANSI C-conforming const... yes checking for inline... inline checking size of short... 2 checking size of void *... 8 checking size of int... 4 checking size of long... 8 checking size of size_t... 8 checking size of long long... 8 checking size of wchar_t... 4 checking for va_copy... yes checking whether the compiler supports variadic macros... yes checking for _FILE_OFFSET_BITS value needed for large files... 64 checking if large file support is available... yes checking for _LARGEFILE_SOURCE value needed for large files... no checking whether byte ordering is bigendian... no checking for iostream... yes checking if C++ compiler supports the explicit keyword... yes checking for std::wstring in ... yes checking for std::istream... yes checking for std::ostream... yes checking how to run the C++ preprocessor... g++ -E checking type_traits usability... no checking type_traits presence... no checking for type_traits... no checking tr1/type_traits usability... yes checking tr1/type_traits presence... yes checking for tr1/type_traits... yes checking for __sync_fetch_and_add and __sync_sub_and_fetch builtins... yes checking for libraries directories... /usr/lib/x86_64-linux-gnu /usr/lib checking for cos... no checking for floor... no checking if floating point functions link without -lm... no checking for sin... yes checking for ceil... yes checking if floating point functions link with -lm... yes checking for strtoull... yes configure: WARNING: Defaulting to the builtin regex library for Unicode build. checking for zlib.h >= 1.1.4... yes checking for zlib.h... (cached) yes checking for deflate in -lz... yes checking for png.h > 0.90... yes checking for png.h... (cached) yes checking for png_sig_cmp in -lpng... yes checking for jpeglib.h... yes checking for jpeg_read_header in -ljpeg... yes checking for tiffio.h... yes checking for TIFFError in -ltiff... yes checking for expat.h... yes checking if expat.h is valid C++ header... yes checking for XML_ParserCreate in -lexpat... yes checking for GTK+ version... checking for pkg-config... /usr/bin/pkg-config checking for GTK+ - version >= 2.6.0... no *** Could not run GTK+ test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occurred. This usually means GTK+ is incorrectly installed. checking for pkg-config... (cached) /usr/bin/pkg-config checking for GTK+ - version >= 3.0.0... no *** Could not run GTK+ test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means GTK+ is incorrectly installed. checking for gtk-config... no checking for GTK - version >= 1.2.7... no *** The gtk-config script installed by GTK could not be found *** If GTK was installed in PREFIX, make sure PREFIX/bin is in *** your path, or set the GTK_CONFIG environment variable to the *** full path to gtk-config. checking for gtk-config... (cached) no checking for GTK - version >= 1.2.3... no *** The gtk-config script installed by GTK could not be found *** If GTK was installed in PREFIX, make sure PREFIX/bin is in *** your path, or set the GTK_CONFIG environment variable to the *** full path to gtk-config. configure: error: The development files for GTK+ were not found. For GTK+ 2, please ensure that pkg-config is in the path and that gtk+-2.0.pc is installed. For GTK+ 1.2 please check that gtk-config is in the path, and that the version is 1.2.3 or above. Also check that the libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config --libs' are in the LD_LIBRARY_PATH or equivalent.

    Error running configure ERROR: failed building wxWidgets Traceback (most recent call last): File "build.py", line 1259, in cmd_build_wx wxbuild.main(wxDir(), build_options) File "/tmp/pip-build-2evi4tjt/wxpython/buildtools/build_wxwidgets.py", line 368, in main "Error running configure") File "/tmp/pip-build-2evi4tjt/wxpython/buildtools/build_wxwidgets.py", line 85, in exitIfError raise builder.BuildError(msg) buildtools.builder.BuildError: Error running configure Finished command: build_wx (0m12.721s) Finished command: build (0m12.721s) Command '"/home/travis/virtualenv/python3.6.2/bin/python" -u build.py build' failed with exit code 1.


    Failed building wheel for wxpython Running setup.py clean for wxpython Failed to build wxpython Installing collected packages: wxpython Running setup.py install for wxpython: started Running setup.py install for wxpython: finished with status 'error' Complete output from command /home/travis/virtualenv/python3.6.2/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-2evi4tjt/wxpython/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-ykt87at0-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/travis/virtualenv/python3.6.2/include/site/python3.6/wxpython: running install running build WARNING: Building this way assumes that all generated files have been generated already. If that is not the case then use build.py directly to generate the source and perform the build stage. You can use --skip-build with the bdist_* or install commands to avoid this message and the wxWidgets and Phoenix build steps in the future.

    "/home/travis/virtualenv/python3.6.2/bin/python" -u build.py build
    Will build using: "/home/travis/virtualenv/python3.6.2/bin/python"
    3.6.2 (default, Jul 17 2017, 15:25:33)
    [GCC 4.8.4]
    Python's architecture is 64bit
    cfg.VERSION: 4.0.0b1
    
    Running command: build
    Running command: build_wx
    wxWidgets build options: ['--wxpython', '--unicode']
    Configure options: ['--enable-unicode', '--with-opengl', '--enable-sound', '--enable-graphics_ctx', '--enable-mediactrl', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--with-sdl']
    /tmp/pip-build-2evi4tjt/wxpython/ext/wxWidgets/configure --enable-unicode --with-opengl --enable-sound --enable-graphics_ctx --enable-mediactrl --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --with-sdl
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking for --disable-gui... no
    checking for --enable-monolithic... no
    checking for --enable-plugins... no
    checking for --without-subdirs... no
    checking for --enable-official_build... no
    checking for --disable-all-features... no
    checking for --enable-universal... no
    checking for --enable-nanox... no
    checking for --enable-gpe... no
    checking for toolkit... gtk
    checking for --with-libpng... yes
    checking for --with-libjpeg... yes
    checking for --with-libtiff... yes
    checking for --without-libjbig... no
    checking for --without-liblzma... no
    checking for --with-libxpm... yes
    checking for --with-libiconv... yes
    checking for --with-libmspack... no
    checking for --without-gtkprint... no
    checking for --with-gnomevfs... no
    checking for --with-libnotify... yes
    checking for --with-hildon... no
    checking for --with-opengl... yes
    checking for --with-dmalloc... no
    checking for --with-sdl... yes
    checking for --with-regex... yes
    checking for --with-zlib... yes
    checking for --with-expat... yes
    checking for --with-macosx-sdk...
    checking for --with-macosx-version-min...
    checking for --enable-debug... default
    checking for --disable-debug_flag... no
    checking for --enable-debug_info... no
    checking for --enable-debug_gdb... no
    checking for --enable-debug_cntxt... no
    checking for --enable-mem_tracing... no
    checking for --disable-shared... no
    checking for --enable-stl... no
    checking for --enable-std_containers... no
    checking for --enable-std_iostreams... yes
    checking for --enable-std_string... yes
    checking for --enable-std_string_conv_in_wxstring... no
    checking for --disable-unicode... no
    checking for --enable-mslu... no
    checking for --enable-utf8... no
    checking for --enable-utf8only... no
    checking for --enable-extended_rtti... no
    checking for --disable-optimise... no
    checking for --enable-profile... no
    checking for --enable-no_rtti... no
    checking for --enable-no_exceptions... no
    checking for --enable-permissive... no
    checking for --enable-no_deps... no
    checking for --disable-vararg_macros... no
    checking for --enable-universal_binary... no
    checking for --enable-macosx_arch... no
    checking for --enable-compat26... no
    checking for --disable-compat28... no
    checking for --disable-rpath... no
    checking for --enable-objc_uniquifying... no
    checking for --disable-visibility... no
    checking for --disable-tls... no
    checking for --enable-intl... yes
    checking for --enable-xlocale... yes
    checking for --enable-config... yes
    checking for --enable-protocols... yes
    checking for --enable-ftp... yes
    checking for --enable-http... yes
    checking for --enable-fileproto... yes
    checking for --enable-sockets... yes
    checking for --enable-ipv6... no
    checking for --enable-ole... yes
    checking for --enable-dataobj... yes
    checking for --enable-ipc... yes
    checking for --enable-baseevtloop... yes
    checking for --enable-epollloop... yes
    checking for --enable-selectloop... yes
    checking for --enable-any... yes
    checking for --enable-apple_ieee... yes
    checking for --enable-arcstream... yes
    checking for --enable-base64... yes
    checking for --enable-backtrace... yes
    checking for --enable-catch_segvs... yes
    checking for --enable-cmdline... yes
    checking for --enable-datetime... yes
    checking for --enable-debugreport... no
    checking for --enable-dialupman... yes
    checking for --enable-dynlib... yes
    checking for --enable-dynamicloader... yes
    checking for --enable-exceptions... yes
    checking for --enable-ffile... yes
    checking for --enable-file... yes
    checking for --enable-filehistory... yes
    checking for --enable-filesystem... yes
    checking for --enable-fontenum... yes
    checking for --enable-fontmap... yes
    checking for --enable-fs_archive... yes
    checking for --enable-fs_inet... yes
    checking for --enable-fs_zip... yes
    checking for --enable-fsvolume... yes
    checking for --enable-fswatcher... yes
    checking for --enable-geometry... yes
    checking for --enable-log... yes
    checking for --enable-longlong... yes
    checking for --enable-mimetype... yes
    checking for --enable-printfposparam... yes
    checking for --enable-snglinst... yes
    checking for --enable-sound... yes
    checking for --enable-stdpaths... yes
    checking for --enable-stopwatch... yes
    checking for --enable-streams... yes
    checking for --enable-sysoptions... yes
    checking for --enable-tarstream... yes
    checking for --enable-textbuf... yes
    checking for --enable-textfile... yes
    checking for --enable-timer... yes
    checking for --enable-variant... yes
    checking for --enable-zipstream... yes
    checking for --enable-url... yes
    checking for --enable-protocol... yes
    checking for --enable-protocol_http... yes
    checking for --enable-protocol_ftp... yes
    checking for --enable-protocol_file... yes
    checking for --enable-threads... yes
    checking for --enable-iniconf... no
    checking for --enable-regkey... yes
    checking for --enable-docview... yes
    checking for --enable-help... yes
    checking for --enable-mshtmlhelp... yes
    checking for --enable-html... yes
    checking for --enable-htmlhelp... yes
    checking for --enable-xrc... yes
    checking for --enable-aui... yes
    checking for --enable-propgrid... yes
    checking for --enable-ribbon... yes
    checking for --enable-stc... yes
    checking for --enable-constraints... yes
    checking for --enable-loggui... yes
    checking for --enable-logwin... yes
    checking for --enable-logdialog... yes
    checking for --enable-mdi... yes
    checking for --enable-mdidoc... yes
    checking for --enable-mediactrl... yes
    checking for --enable-gstreamer8... no
    checking for --enable-richtext... yes
    checking for --enable-postscript... yes
    checking for --enable-printarch... yes
    checking for --enable-svg... yes
    checking for --enable-webkit... yes
    checking for --enable-webview... yes
    checking for --enable-graphics_ctx... yes
    checking for --enable-clipboard... yes
    checking for --enable-dnd... yes
    checking for --disable-controls... no
    checking for --enable-markup... yes
    checking for --enable-accel... yes
    checking for --enable-animatectrl... yes
    checking for --enable-bannerwindow... yes
    checking for --enable-artstd... yes
    checking for --enable-arttango... auto
    checking for --enable-bmpbutton... yes
    checking for --enable-bmpcombobox... yes
    checking for --enable-button... yes
    checking for --enable-calendar... yes
    checking for --enable-caret... yes
    checking for --enable-checkbox... yes
    checking for --enable-checklst... yes
    checking for --enable-choice... yes
    checking for --enable-choicebook... yes
    checking for --enable-collpane... yes
    checking for --enable-colourpicker... yes
    checking for --enable-combobox... yes
    checking for --enable-comboctrl... yes
    checking for --enable-commandlinkbutton... yes
    checking for --enable-dataviewctrl... yes
    checking for --enable-datepick... yes
    checking for --enable-detect_sm... yes
    checking for --enable-dirpicker... yes
    checking for --enable-display... yes
    checking for --enable-editablebox... yes
    checking for --enable-filectrl... yes
    checking for --enable-filepicker... yes
    checking for --enable-fontpicker... yes
    checking for --enable-gauge... yes
    checking for --enable-grid... yes
    checking for --enable-headerctrl... yes
    checking for --enable-hyperlink... yes
    checking for --enable-imaglist... yes
    checking for --enable-infobar... yes
    checking for --enable-listbook... yes
    checking for --enable-listbox... yes
    checking for --enable-listctrl... yes
    checking for --enable-notebook... yes
    checking for --enable-notifmsg... yes
    checking for --enable-odcombobox... yes
    checking for --enable-popupwin... yes
    checking for --enable-prefseditor... yes
    checking for --enable-radiobox... yes
    checking for --enable-radiobtn... yes
    checking for --enable-richmsgdlg... yes
    checking for --enable-richtooltip... yes
    checking for --enable-rearrangectrl... yes
    checking for --enable-sash... yes
    checking for --enable-scrollbar... yes
    checking for --enable-searchctrl... yes
    checking for --enable-slider... yes
    checking for --enable-spinbtn... yes
    checking for --enable-spinctrl... yes
    checking for --enable-splitter... yes
    checking for --enable-statbmp... yes
    checking for --enable-statbox... yes
    checking for --enable-statline... yes
    checking for --enable-stattext... yes
    checking for --enable-statusbar... yes
    checking for --enable-taskbaricon... yes
    checking for --enable-tbarnative... yes
    checking for --enable-textctrl... yes
    checking for --enable-datepick... yes
    checking for --enable-tipwindow... yes
    checking for --enable-togglebtn... yes
    checking for --enable-toolbar... yes
    checking for --enable-toolbook... yes
    checking for --enable-treebook... yes
    checking for --enable-treectrl... yes
    checking for --enable-treelist... yes
    checking for --enable-commondlg... yes
    checking for --enable-aboutdlg... yes
    checking for --enable-choicedlg... yes
    checking for --enable-coldlg... yes
    checking for --enable-filedlg... yes
    checking for --enable-finddlg... yes
    checking for --enable-fontdlg... yes
    checking for --enable-dirdlg... yes
    checking for --enable-msgdlg... yes
    checking for --enable-numberdlg... yes
    checking for --enable-splash... yes
    checking for --enable-textdlg... yes
    checking for --enable-tipdlg... yes
    checking for --enable-progressdlg... yes
    checking for --enable-wizarddlg... yes
    checking for --enable-menus... yes
    checking for --enable-miniframe... yes
    checking for --enable-tooltips... yes
    checking for --enable-splines... yes
    checking for --enable-mousewheel... yes
    checking for --enable-validators... yes
    checking for --enable-busyinfo... yes
    checking for --enable-hotkey... auto
    checking for --enable-joystick... yes
    checking for --enable-metafile... auto
    checking for --enable-dragimage... yes
    checking for --enable-accessibility... no
    checking for --enable-uiactionsim... yes
    checking for --enable-dctransform... yes
    checking for --enable-webviewwebkit... yes
    checking for --enable-palette... yes
    checking for --enable-image... yes
    checking for --enable-gif... yes
    checking for --enable-pcx... yes
    checking for --enable-tga... yes
    checking for --enable-iff... yes
    checking for --enable-pnm... yes
    checking for --enable-xpm... yes
    checking for --enable-ico_cur... yes
    checking for --enable-dccache... yes
    checking for --enable-ps-in-msw... yes
    checking for --enable-ownerdrawn... yes
    checking for --enable-uxtheme... yes
    checking for --enable-wxdib... yes
    checking for --enable-webviewie... yes
    checking for --enable-autoidman... no
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether we are using the Intel C compiler... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking whether gcc needs -traditional... no
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking whether we are using the Intel C++ compiler... no
    checking whether we are using the Sun C++ compiler... no
    checking for ar... ar
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for langinfo.h... yes
    checking for wchar.h... yes
    checking for sys/select.h... yes
    checking for cxxabi.h... yes
    checking for an ANSI C-conforming const... yes
    checking for inline... inline
    checking size of short... 2
    checking size of void *... 8
    checking size of int... 4
    checking size of long... 8
    checking size of size_t... 8
    checking size of long long... 8
    checking size of wchar_t... 4
    checking for va_copy... yes
    checking whether the compiler supports variadic macros... yes
    checking for _FILE_OFFSET_BITS value needed for large files... 64
    checking if large file support is available... yes
    checking for _LARGEFILE_SOURCE value needed for large files... no
    checking whether byte ordering is bigendian... no
    checking for iostream... yes
    checking if C++ compiler supports the explicit keyword... yes
    checking for std::wstring in <string>... yes
    checking for std::istream... yes
    checking for std::ostream... yes
    checking how to run the C++ preprocessor... g++ -E
    checking type_traits usability... no
    checking type_traits presence... no
    checking for type_traits... no
    checking tr1/type_traits usability... yes
    checking tr1/type_traits presence... yes
    checking for tr1/type_traits... yes
    checking for __sync_fetch_and_add and __sync_sub_and_fetch builtins... yes
    checking for libraries directories... /usr/lib/x86_64-linux-gnu /usr/lib
    checking for cos... no
    checking for floor... no
    checking if floating point functions link without -lm... no
    checking for sin... yes
    checking for ceil... yes
    checking if floating point functions link with -lm... yes
    checking for strtoull... yes
    configure: WARNING: Defaulting to the builtin regex library for Unicode build.
    checking for zlib.h >= 1.1.4... yes
    checking for zlib.h... (cached) yes
    checking for deflate in -lz... yes
    checking for png.h > 0.90... yes
    checking for png.h... (cached) yes
    checking for png_sig_cmp in -lpng... yes
    checking for jpeglib.h... yes
    checking for jpeg_read_header in -ljpeg... yes
    checking for tiffio.h... yes
    checking for TIFFError in -ltiff... yes
    checking for expat.h... yes
    checking if expat.h is valid C++ header... yes
    checking for XML_ParserCreate in -lexpat... yes
    checking for GTK+ version...
    checking for pkg-config... /usr/bin/pkg-config
    checking for GTK+ - version >= 2.6.0... no
    *** Could not run GTK+ test program, checking why...
    *** The test program failed to compile or link. See the file config.log for the
    *** exact error that occurred. This usually means GTK+ is incorrectly installed.
    checking for pkg-config... (cached) /usr/bin/pkg-config
    checking for GTK+ - version >= 3.0.0... no
    *** Could not run GTK+ test program, checking why...
    *** The test program failed to compile or link. See the file config.log for the
    *** exact error that occured. This usually means GTK+ is incorrectly installed.
    checking for gtk-config... no
    checking for GTK - version >= 1.2.7... no
    *** The gtk-config script installed by GTK could not be found
    *** If GTK was installed in PREFIX, make sure PREFIX/bin is in
    *** your path, or set the GTK_CONFIG environment variable to the
    *** full path to gtk-config.
    checking for gtk-config... (cached) no
    checking for GTK - version >= 1.2.3... no
    *** The gtk-config script installed by GTK could not be found
    *** If GTK was installed in PREFIX, make sure PREFIX/bin is in
    *** your path, or set the GTK_CONFIG environment variable to the
    *** full path to gtk-config.
    configure: error:
    The development files for GTK+ were not found. For GTK+ 2, please
    ensure that pkg-config is in the path and that gtk+-2.0.pc is
    installed. For GTK+ 1.2 please check that gtk-config is in the path,
    and that the version is 1.2.3 or above. Also check that the
    libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
    --libs' are in the LD_LIBRARY_PATH or equivalent.
    
    Error running configure
    ERROR: failed building wxWidgets
    Traceback (most recent call last):
      File "build.py", line 1259, in cmd_build_wx
        wxbuild.main(wxDir(), build_options)
      File "/tmp/pip-build-2evi4tjt/wxpython/buildtools/build_wxwidgets.py", line 368, in main
        "Error running configure")
      File "/tmp/pip-build-2evi4tjt/wxpython/buildtools/build_wxwidgets.py", line 85, in exitIfError
        raise builder.BuildError(msg)
    buildtools.builder.BuildError: Error running configure
    Finished command: build_wx (0m12.566s)
    Finished command: build (0m12.566s)
    Command '"/home/travis/virtualenv/python3.6.2/bin/python" -u build.py build' failed with exit code 1.
    
    ----------------------------------------
    

    Command "/home/travis/virtualenv/python3.6.2/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-2evi4tjt/wxpython/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-ykt87at0-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/travis/virtualenv/python3.6.2/include/site/python3.6/wxpython" failed with error code 1 in /tmp/pip-build-2evi4tjt/wxpython/ The command "pip install -U wxpython" failed and exited with 1 during . Your build has been stopped.

    # Put code sample here
    

    Just create a travis.xml file like this:

    language: python python:

    • "3.6.2"

    command to install dependencies

    install: #I included this one for consistency of what I did.

    • "pip install requests coveralls nose-htmloutput nose coverage"
    • "pip install -U wxpython"
    opened by Thimxx 18
  • Patch release for 4.2.0 to remove `attrdict` module dependency wheel install failure

    Patch release for 4.2.0 to remove `attrdict` module dependency wheel install failure

    Operating system: Ubuntu 22.04 wxPython version & source: PyPi Python version & source: Python 3.10.6

    Description of the problem: As described in this issue very well: https://github.com/wxWidgets/Phoenix/issues/2225, current install of wxpython version 4.2.0 (https://pypi.org/project/wxPython/4.2.0/) fails, due to missing dependency to attrdict module, imported here: https://github.com/wxWidgets/Phoenix/blob/b567d1e6e3aff88f900d5ec4fb148531746b211d/buildtools/config.py#L30

    Proposed Solution To me, it seems like cherry picking this commit: https://github.com/wxWidgets/Phoenix/commit/2e9169effa9abf14f34f8436a791b8829eea7774, to the 4.2.0 release (https://github.com/wxWidgets/Phoenix/releases/tag/wxPython-4.2.0), and doing a patch release would solve the problem.

    Note However, I am also wondering, since the dependency is needed in buildtools/config.py, wouldn't this dependency fit better in requirements/intall.txt, instead of devel.txt?

    E.g. here: https://github.com/wxWidgets/Phoenix/commit/2e9169effa9abf14f34f8436a791b8829eea7774#diff-48561a6ac9f59b3b79790238a78d2c345125e61834588671ac55f3fdafe1cd58R24

    opened by junwoo091400 0
  • Icon is blurred in KDE plasma tray

    Icon is blurred in KDE plasma tray

    Operating system: Linux wxPython version & source: self-built Python version & source: https://github.com/x211321/RGB-Config-Acer-gkbbl-0

    Description of the problem:

    In the source the icon looks normal but when built and the application is running, the tray icon becomes blurry.

    Here is a screenshot of how the icon should look laid on top of how it does look and compared to other KDE Plasma tray icons.

    blur

    https://github.com/x211321/RGB-Config-Acer-gkbbl-0/blob/main/assets/tray/color.png
    https://github.com/x211321/RGB-Config-Acer-gkbbl-0/blob/main/assets/tray/outline_white.png
    
    
    opened by ghtesting2020 2
  • IMAGE_QUALITY_BOX_AVERAGE is broken

    IMAGE_QUALITY_BOX_AVERAGE is broken

    Operating system: Windows 10, x64 wxPython version & source: 4.2.1a1 (build artifact from 24 Dec 2022) Python version & source: 3.11.1 from official website

    Description of the problem: When I Rescale a wx.Image using wx.IMAGE_QUALITY_HIGH, sometimes the image disappears (= becomes fully black). I think this happens when it's downsizing. When I specify wx.IMAGE_QUALITY_BOX_AVERAGE, it always disappears. I suspect wx.IMAGE_QUALITY_HIGH picks wx.IMAGE_QUALITY_BOX_AVERAGE when downsizing, and that wx.IMAGE_QUALITY_BOX_AVERAGE is broken.

    opened by AtlasHackert 0
  • Build failure on Windows due to unhandled space in waf file path

    Build failure on Windows due to unhandled space in waf file path

    Operating system: Windows 10, x64 wxPython version & source: 4.2.0, using pip install Python version & source: Python 3.11.1

    Description of the problem: When trying to build and install (after fixing the attrdict3 issue), I'm getting: C:\Program Files\Python311\python.exe: can't open file 'C:\Users\User': [Errno 2] No such file or directory

    The full command it's trying to run, is: "C:\Program Files\Python311\python.exe" C:\Users\User Name\AppData\Local\Temp\pip-install-h8yxxxbv\wxpython_58b6707f001a4559a3356c51bf6f76cc\bin\waf-2.0.24 --msvc_arch=x64 --python="C:\Program Files\Python311\python.exe" --out=build/waf/3.11/x64/release configure build

    Due to the space in the path not being escaped, the command line fails. The bug is in build.py, line 1769: cmd = '"%s" %s %s configure build %s' % (PYTHON, waf, ' '.join(build_options), options.extra_waf)

    This should escape the second argument. So it should be: cmd = '"%s" "%s" %s configure build %s' % (PYTHON, waf, ' '.join(build_options), options.extra_waf)

    opened by AtlasHackert 0
  • HtmlListBox in 4.2.0 shows unwanted separation lines

    HtmlListBox in 4.2.0 shows unwanted separation lines

    Operating system: wxPython version & source: 4.2.0 Windows 10, PyPI Python version & source: C Python 3.10, anaconda

    Description of the problem: I'm using the wx.html.HtmlListBox to display interactive user content since 4.0. Visually the items are already distinct and were looking fine. Since Version 4.2.0 wxPython introduces separator lines between each row that I did not find an option to switch of.

    Is there any workaround or hidden setting to get back to the old view?

    I've attached two screen shots from wxPython 4.1.1 and 4.2.0 for comparison:

    4.1.1:

    4.1.1

    4.2.0:

    4.2.0

    opened by aglavic 2
Releases(wxPython-4.2.0)
Owner
Cross-Platform GUI Library
Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance

Lark-Cython Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance on CPython. Install: pip install lark-cython Usage:

Lark - Parsing Library & Toolkit 31 Dec 26, 2022
Grumpy is a Python to Go source code transcompiler and runtime.

Grumpy: Go running Python Overview Grumpy is a Python to Go source code transcompiler and runtime that is intended to be a near drop-in replacement fo

Google 10.6k Dec 24, 2022
Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

pythonnet - Python.NET Python.NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) a

3.5k Jan 06, 2023
Rust syntax and lexical analyzer implemented in Python.

Rust Scanner Rust syntax and lexical analyzer implemented in Python. This project was made for the Programming Languages class at ESPOL (SOFG1009). Me

Joangie Marquez 0 Jul 03, 2022
Pyjion - A JIT for Python based upon CoreCLR

Pyjion Designing a JIT API for CPython A note on development Development has moved to https://github.com/tonybaloney/Pyjion FAQ What are the goals of

Microsoft 1.6k Dec 30, 2022
The Stackless Python programming language

This is Python version 3.7.0 alpha 4+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 20

Stackless Python 891 Jan 03, 2023
A faster and highly-compatible implementation of the Python programming language. The code here is out of date, please follow our blog

Pyston is a faster and highly-compatible implementation of the Python programming language. Version 2 is currently closed source, but you can find the

4.9k Dec 21, 2022
A mini implementation of python library.

minipy author = RQDYSGN date = 2021.10.11 version = 0.2 1. 简介 基于python3.7环境,通过py原生库和leetcode上的一些习题构建的超小型py lib。 2. 环境 Python 3.7 2. 结构 ${project_name}

RQDYGSN 2 Oct 26, 2021
Core Python libraries ported to MicroPython

This is a repository of libraries designed to be useful for writing MicroPython applications.

MicroPython 1.8k Jan 07, 2023
An implementation of Python in Common Lisp

CLPython - an implementation of Python in Common Lisp CLPython is an open-source implementation of Python written in Common Lisp. With CLPython you ca

Willem Broekema 339 Jan 04, 2023
wxPython's Project Phoenix. A new implementation of wxPython, better, stronger, faster than he was before.

wxPython Project Phoenix Introduction Welcome to wxPython's Project Phoenix! Phoenix is the improved next-generation wxPython, "better, stronger, fast

1.9k Jan 07, 2023
CPython Extension Module Support for Flit

CPython Extension Module Support for Flit This is a PEP 517 build backend piggybacking (and hacking) Flit to support building C extensions. Mostly a p

Tzu-ping Chung 8 May 24, 2022
A faster and highly-compatible implementation of the Python programming language.

Pyston Pyston is a fork of CPython 3.8.8 with additional optimizations for performance. It is targeted at large real-world applications such as web se

2.3k Jan 09, 2023
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems

The MicroPython project This is the MicroPython project, which aims to put an implementation of Python 3.x on microcontrollers and small embedded syst

MicroPython 15.7k Dec 31, 2022
x86-64 assembler embedded in Python

Portable Efficient Assembly Code-generator in Higher-level Python (PeachPy) PeachPy is a Python framework for writing high-performance assembly kernel

Marat Dukhan 1.7k Jan 03, 2023
The Python programming language

This is Python version 3.10.0 alpha 5 Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. See the end of this file for further co

Python 49.7k Dec 30, 2022
x2 - a miniminalistic, open-source language created by iiPython

x2 is a miniminalistic, open-source language created by iiPython, inspired by x86 assembly and batch. It is a high-level programming language with low-level, easy-to-remember syntaxes, similar to x86

Benjamin 3 Jul 29, 2022
DO NOT USE. Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.

IronPython 3 IronPython3 is NOT ready for use yet. There is still much that needs to be done to support Python 3.x. We are working on it, albeit slowl

IronLanguages 2k Dec 30, 2022