我必须创建一个类属性来获取TextCtrl的输入,它可以是本地的吗?

时间:2018-12-16 17:46:48

标签: python user-interface wxpython wxwidgets wxpython-phoenix

这是原始代码,我在其中创建了sliceListX = [arr[i: i + wSizeTot] for i in range(0, arr.shape[0] - wSizeTot+1, rQty)] 属性wx.TextCtrl,绑定事件运行良好:

self.tc1

如果我想让文本控件import wx class Example(wx.Frame): def __init__(self, title): super().__init__(None, title=title) self.panel = wx.Panel(self) self.tc1 = None self.initUI() def initUI(self): sizer = wx.GridBagSizer(2, 2) self.set_name(sizer) self.panel.SetSizer(sizer) sizer.Fit(self) def set_name(self, sizer): text1 = wx.StaticText(self.panel, label="Enter your name:") sizer.Add(text1, pos=(0, 0), flag=wx.LEFT | wx.TOP | wx.BOTTOM, border=10) self.tc1 = wx.TextCtrl(self.panel, style=wx.TE_CENTER, value="enter_name_here") self.tc1.Bind(wx.EVT_TEXT, self.on_get_text) sizer.Add(self.tc1, pos=(0, 1), flag=wx.TOP|wx.RIGHT|wx.BOTTOM|wx.EXPAND, border=5) def on_get_text(self, e): print(self.tc1.GetValue()) if __name__ == '__main__': app = wx.App() Example("Example").Show() app.MainLoop() 成为方法self.tc1的局部变量怎么办,因为我不想污染太多属性的类。需要明确的是,如果我以这种方式更改方法self.set_name,请将self.set_name设为该方法的局部变量:

tc1

如何修改Bind方法以实现相同的效果?类中的小部件太多,我真的不想让每个小部件都具有类属性。

1 个答案:

答案 0 :(得分:2)

传递给处理程序的EVT_TEXT事件包含对绑定对象的引用。要获取该对象,请调用GetEventObject()

select to_char(sysdate + NUMTODSINTERVAL(10,'MINUTE'),'DD/MM/YYYY HH24:MI:SS') from dual;