0

我试图从 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()
4

1 回答 1

2

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

text = wx.TextCtrl(panel)

你需要这样做:

self.text = wx.TextCtrl(panel)

请注意,text与 不一样self.text

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

于 2017-08-09T15:34:29.320 回答