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

How to retrieve text from wx python CtrlText?

我正在尝试从 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()

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

text = wx.TextCtrl(panel)

您需要这样做:

self.text = wx.TextCtrl(panel)

请注意 textself.text 不同。

现在您的事件处理程序可以工作了。