4

このチュートリアルに従って、 wxPython と wxFormBuilder を使用して簡単な GUI をすばやく作成しようとしています。

wxFormBuilder を使用して、1 つの垂直レイアウト、1 つの編集テキスト コントロール、およびテキスト コントロールの値のみをクリアするボタンを備えた非常にシンプルなフレームを作成しました。WxFormBuilder は Python コードを生成し、ボタンがクリックされたときにテキスト コントロールの値をクリアするために数行追加しました。これは愚かな単純なフレームの画像です。

シンプルなフレーム

このファイルを Python で実行すると、テキスト コントロールに入力したテキストが GUI によってクリアされます。フレームの閉じるボタンをクリックすると、次のように表示されます。

swig/python detected a memory leak of type 'wxPyXmlSubclassFactory *', no destructor found.

問題をグーグルで検索してみましたが、Python はデストラクタを必要としないほど動的であることがわかりました。関数を追加してみました__del__が、それでも同じエラー メッセージが表示されます。

そのエラーを取り除くためのアイデアはありますか? 私は使用しています:

  • パイソン 2.7.6
  • Python 2.7 用の wxPython 3.0.0.0
  • 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()
4

2 に答える 2