1

wxpython で wx.TextCtrl のサブクラスを作成しています。

ComboBox または ListBox に追加データを追加する方法と同様に、このクラスで wx.TextCtrl ウィジェットに追加データを追加したいと考えています。

これが私のコードです:

import wx
class ExtraDataForTxtCtrl(wx.TextCtrl):

    def __init(self, ExtraTextData):
        self.ExtraTextData=ExtraTextData


    def getExtraTCData(self):
        return self.ExtraTextData

    def setExtraTCData(self, ExtraTextData):
        self.ExtraTextData=ExtraTextData

私の問題は、私がPythonを初めて使用し、これを実装する方法と、それが正しいかどうかがわからないことです。

4

2 に答える 2

2
import wx
class ExtraDataForTxtCtrl(wx.TextCtrl):

    def __init__(self,*args,**kwargs):
        self.ExtraTextData=kwargs.pop("ExtraTextData")
        wx.TextCtrl.__init__(self,*args,**kwargs)


    def getExtraTCData(self):
        return self.ExtraTextData

    def setExtraTCData(self, ExtraTextData):
        self.ExtraTextData=ExtraTextData

おそらくより良い解決策は、 set/getattr を使用することです

class DataTxtCtrl(wx.TextCtrl):

    def __init__(self,*args,**kwargs):
        self.datadict = {}
        self.ExtraTextData=kwargs.pop("ExtraTextData")
        wx.TextCtrl.__init__(self,*args,**kwargs)
    def __getattr__(self,attr):
        return self.datadict[attr]
    def __setattr__(self,attr,val):
        self.datadict[attr]=val

その後、多くの変数を設定して、通常のように使用できます

   a = wx.App(redirect=False)
   f = wx.Dialog(None,-1,"Example")
   te = DataTxtCtrl(f,-1,"some_default")
   te.somevar = "hello"
   te.someother = "world"
   print te.somevar+" "+te.someothervar
   f.ShowModal()
于 2012-08-28T23:40:28.807 に答える
0

サブクラスを作成する代わりに、追加の文字列値を wx.textCtrl ウィジェットにリンクする独自のクラスを作成することにしました。

貢献してくれたすべての人に感謝します!:)

私のコードは次のとおりです。

class TextDataHolder:
    def __init__(self, wxTextControl, data):

        self.wxTextControl=wxTextControl
        self.data=data

    def setDataTxt(self,data):
        self.wxTextControl=wxTextControl
        self.data=data

    def getDataTxt(self):
        return self.data

実装方法は次のとおりです。

import wx, TextDataHolder

exampleCtrl=wx.TextCtrl(self, -1, "Hello")
exampleData=TextDataHolder.TextDataHolder(exampleCtrl,"Sup?")
print exampleData.getDataTxt() #prints 'Sup?'  
于 2012-08-29T20:26:48.390 に答える