如何从wx python CtrlText中检索文本?

时间:2017-08-09 15:19:35

标签: wxpython textctrl

我正在尝试从Python中的TextCtrl对象中检索文本值,而我似乎无法得到它。 文本在下面的代码中命名为“text”,我试图在“Click”函数中检索值。 我很清楚如何显示文本框和按钮以及如何检索事件,但是当我运行此代码时,我有一个错误,指出“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()

1 个答案:

答案 0 :(得分:2)

您需要将文本控件转换为框架类的属性。所以不要像这样创建它:

text = wx.TextCtrl(panel)

你需要这样做:

self.text = wx.TextCtrl(panel)

请注意,textself.text不同。

现在您的事件处理程序将起作用。