Kivy TextInput on_double_tap

Я добавил окно ввода текста в мой Kivy APP, и я пытаюсь сделать две вещи с окном. Окно ввода текста по умолчанию выделяет слова, которые дважды щелкны. Я хочу сохранить это слово переменной и не могу понять, как передать его из окна ввода в переменную. Во-вторых, я пытаюсь вырезать и вставлять из ОС в Kivy и не могу понять это. Любая помощь приветствуется. Вот код, который у меня есть. Спасибо, что помогло мне забраться так далеко.

Builder.load_string('''
<mousewidget>: image: image label: label orientation: 'vertical' Image: id: image source: root.source Label: id: label size_hint_y: None height: 50 text: 'Test'
''')
class MouseWidget(BoxLayout): image = ObjectProperty() label = ObjectProperty() source = StringProperty() def on_touch_down(self, touch): if self.image.collide_point(*touch.pos): trigger = 0 if touch.x >= 133 and touch.x <= 646 and touch.y >= 162 and touch.y <=675: self.label.text = str(touch.pos) def on_touch_up(self, touch): self.label.text = 'This is a test'
class TESTApp(App): def build(self): root = Accordion(orientation='horizontal') item= AccordionItem(title='Test') src = "image.png" image = MouseWidget(source=src, size_hint = (1.0, 1.0)) textinput = TextInput(text='Hello world', size_hint = (0.5, 1.0)) textinput.bind(text2 = *************()) # add image to AccordionItem item.add_widget(image) item.add_widget(textinput) root.add_widget(item) return root
if __name__ == '__main__': TESTApp().run()
</mousewidget>
1 ответ

Просто переопределите метод ************* как ************* ниже.

from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.clock import Clock
class Test(TextInput): def *************(self): # make sure it performs it original function super(Test, self).*************() def on_word_selection(*l): selected_word = self.selection_text print selected_word # do what you want with selected word here # let the word be selected wait for # next frame and get the selected word Clock.schedule_once(on_word_selection)
class TestApp(App): def build(self): return Test()
if __name__ == '__main__': TestApp().run()

Для копирования и вставки TextInput поддерживает ctrl + x, c, v, внутренне TextInput использует _cut, _copy и _paste функции. Вам не нужно использовать их напрямую, kivy позаботится об этом, потому что вы просто используете ctrl + c, x, v.

licensed under cc by-sa 3.0 with attribution.