我正在尝试从Python中的TextCtrl对象中检索文本值,但我似乎无法理解它。 文本在下面的代码中被命名为"text",我试图在"点击"函数中检索值。 我非常了解如何显示文本框和按钮以及如何检索事件,但是当我运行此代码时,我有一个错误,说"myForm"没有属性"text",如何将"text"设置为myForm的属性?如何从文本对象中获取值?
from datetime import datetime, time
from pygame import mixer # Load the required library
import wx
class myForm(wx.Frame):
def __init__(self, parent, title):
super(myForm, self).__init__(parent,title=title, size=(300, 100))
hbox = wx.BoxSizer(wx.HORIZONTAL)
fgs = wx.FlexGridSizer(3, 2, 9, 25)
panel = wx.Panel(self)
title = wx.StaticText(panel, label="Time in second")
button1 = wx.Button(panel, label="Start")
text=wx.TextCtrl(panel)
self.Bind(wx.EVT_BUTTON, self.Click)
fgs.AddMany([(title), (text, 1, wx.EXPAND),(button1,1,wx.EXPAND)])
fgs.AddGrowableRow(2, 1)
fgs.AddGrowableCol(1, 1)
hbox.Add(fgs, proportion=1, flag=wx.ALL|wx.EXPAND, border=15)
panel.SetSizer(hbox)
self.Centre()
self.Show()
def Click(self, event):
print 'event reached frame class'
#print tc1.GetValue()
print "value",self.text.GetValue()
event.Skip()
您需要将文本控件转换为框架类的属性。因此,而不是像这样创建它:
text = wx.TextCtrl(panel)
您需要这样做:
self.text = wx.TextCtrl(panel)
请注意,text
与self.text
不同。
现在,事件处理程序将正常工作。