为 wx.TextCtrl 创建子类 [英] Creating subclass for wx.TextCtrl

查看:21
本文介绍了为 wx.TextCtrl 创建子类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为 wxpython 中的 wx.TextCtrl 创建一个子类.

I'm creating a subclass for the wx.TextCtrl in wxpython.

我希望这个类向 wx.TextCtrl 小部件添加额外数据,类似于将额外数据添加到 ComboBox 或 ListBox 的方式.

I want this class to add extra data to the wx.TextCtrl widgets similar as to the way extra data can be added to a ComboBox or ListBox.

这是我的代码:

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 新手,不知道如何实现它以及它是否正确.

My problem is that I'm new to python and have no idea how to implement this and if it is correct or not.

推荐答案

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

possibly a better solution would be to use 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

然后你可以设置很多变量并像往常一样使用

then you can set many variables and use it like normal

   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()

这篇关于为 wx.TextCtrl 创建子类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆