Как получить текст из wx python CtrlText?

Я пытаюсь получить текстовое значение из объекта TextCtrl в Python и не могу его получить. В приведенном ниже коде текст называется «текст», я попытался получить значение в функции «Click». Я хорошо понял, как показать текстовое поле и кнопку и как получить событие, но когда я запускаю этот код, у меня возникает ошибка, в которой говорится, что «myForm» не имеет атрибута «текст». Как установить «текст» как атрибут 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()

person Raphaël Poli    schedule 09.08.2017    source источник


Ответы (1)


Вам нужно сделать текстовый элемент управления атрибутом класса вашего фрейма. Поэтому вместо того, чтобы создавать его следующим образом:

text = wx.TextCtrl(panel)

Вам нужно сделать это:

self.text = wx.TextCtrl(panel)

Обратите внимание, что text не совпадает с self.text.

Теперь ваш обработчик событий будет работать.

person Mike Driscoll    schedule 09.08.2017