我正在尝试按照 this tutorial 使用 wxPython 和 wxFormBuilder 快速制作简单的 GUI。

使用wxFormBuilder,我创建了一个 super 简单的框架,一个垂直布局,一个编辑文本控件和一个按钮,它只清除文本控件的值。 WxFormBuilder 生成了 Python 代码,我只是添加了几行来清除单击按钮时文本控件的值。这是愚蠢的简单框架的图像。

当我在 Python 中运行此文件时,GUI 会清除我在文本控件中键入的文本。当我点击 Frame 的关闭按钮时,我看到:
swig/python detected a memory leak of type 'wxPyXmlSubclassFactory *', no destructor found.
我尝试谷歌搜索这个问题,但只发现 Python 足够动态,不需要析构函数。我确实尝试添加 __del__ 函数,但我仍然收到相同的错误消息。

摆脱该错误的想法?我正在使用:

  • Python 2.7.6
  • wxPython 3.0.0.0 用于 Python 2.7
  • wxFormBuilder 3.4.2
  • Windows 7,32 位

  • 非常感谢您!

    如果有人需要,这是我拥有的代码:
    # -*- coding: utf-8 -*-
    
    ###########################################################################
    ## Python code generated with wxFormBuilder (version Feb 26 2014)
    ## http://www.wxformbuilder.org/
    ##
    ## PLEASE DO "NOT" EDIT THIS FILE!
    ###########################################################################
    
    import wx
    import wx.xrc
    
    ###########################################################################
    ## Class MyFrame1
    ###########################################################################
    
    class MyFrame1 ( wx.Frame ):
    
        def __init__( self, parent ):
            wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 203,155 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
    
            self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
    
            bSizer1 = wx.BoxSizer( wx.VERTICAL )
    
            self.edit = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
            bSizer1.Add( self.edit, 1, wx.ALL|wx.EXPAND, 5 )
    
            self.clearButton = wx.Button( self, wx.ID_ANY, u"Clear", wx.DefaultPosition, wx.DefaultSize, 0 )
            bSizer1.Add( self.clearButton, 1, wx.ALL|wx.EXPAND, 5 )
    
    
            self.SetSizer( bSizer1 )
            self.Layout()
    
            self.Centre( wx.BOTH )
    
            # Connect Events
            self.clearButton.Bind( wx.EVT_BUTTON, self.clearFunc )
    
        def __del__( self ):
            pass
    
    
        # Virtual event handlers, overide them in your derived class
        def clearFunc( self, event ):
            event.Skip()
    
    class SimpleFrame(MyFrame1):
        def __init__(self,parent):
            MyFrame1.__init__(self,parent)
    
        def clearFunc(self,event):
            self.edit.SetValue("")
    
    app = wx.App(False)
    frame = SimpleFrame(None)
    frame.Show(True)
    app.MainLoop()
    

    最佳答案

    我一直在使用最新版本(3.0.0)时遇到相同的错误。此后没有发布新版本。不过没必要担心。预计很快就会看到修复。

    看一下上个帖子 here

    关于python - 如何修复 wxPython/wxFormBuilder 中的 "memory leak of type ' wxPyXmlSubclassFactory *', no destructor found"错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22445210/

    10-10 04:01