wxPython, Установленное значение StaticText ()

Вы должны реализовать делегат из AVSpeechSynthesizer и добавить следующий код:

var myText = "This is my text, which will be detect on text-to-speech operation"

override func viewDidLoad() {
    super.viewDidLoad()
    speechSynthesizer.delegate = self
}

Реализовано willSpeakRangeOfSpeechString, которое будет называть каждое произнесенное слово системой в текстовой строке. Вы можете реализовать метод contains() типа String для обнаружения конкретной строки в вашем тексте.

extension TextToSpeechVC: AVSpeechSynthesizerDelegate {

    func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance) {

        let string = self.myText[characterRange.lowerBound..<characterRange.upperBound]

        if string.trim == "operation" {
            print("string = \(string)")
        }
    }
}

Добавить расширение String для индекса диапазона.

extension String {

    var trim: String {
        return self.trimmingCharacters(in: .whitespacesAndNewlines)
    }


    subscript (bounds: CountableClosedRange<Int>) -> String {
        let start = index(startIndex, offsetBy: bounds.lowerBound)
        let end = index(startIndex, offsetBy: bounds.upperBound)
        return String(self[start...end])
    }

    subscript (bounds: CountableRange<Int>) -> String {
        let start = index(startIndex, offsetBy: bounds.lowerBound)
        let end = index(startIndex, offsetBy: bounds.upperBound)
        return String(self[start..<end])
    }
}

Надеюсь, это поможет вам.

27
задан RailsSon 16 November 2008 в 01:52
поделиться

2 ответа

wx.TextCtrl имеет стиль, названный wx.TE_READONLY. Используйте это для создания его только для чтения.

Как sidenode, можно использовать C++ wxWidgets Руководство для wxPython также. Где специальная обработка для wxPython или других портов требуется, руководство часто указывает на различие.

23
ответ дан 28 November 2019 в 04:16
поделиться

Если Вы используете wx. StaticText () Вы можете просто:

def __init__(self, parent, *args, **kwargs): #frame constructor, etc.
    self.some_text = wx.StaticText(panel, wx.ID_ANY, label="Awaiting MySQL Data", style=wx.ALIGN_CENTER)

def someFunction(self):
    mysql_data = databasemodel.returnData() #query your database to return a string
    self.some_text.SetLabel(mysql_data)

Как litb упомянутый, wxWidgets документы часто намного легче использовать, чем wxPython документы . Чтобы видеть, что SetLabel () функция может быть применен к wx. Экземпляр StaticText, необходимо путешествовать иерархия пространства имен в wxPython документах wxWindow суперкласс , от который wx. StaticText разделяется на подклассы. Существует несколько вещей, отличающихся в wxPython от wxWidgets, и это может быть сложно для обнаружения, каковы они. К счастью, много времени, различиями являются функции удобства, которые были добавлены к wxPython и не найдены в wxWidgets.

61
ответ дан 28 November 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: