2

最近、Kivy の学習と使用を開始しました。今日、Kivy のバグなのか、私に代わって誤解なのかよくわからない問題に遭遇しました。これは簡易版です。

検索用のテキスト入力が上部にある GUI に取り組んでいました。私の Kv ファイルは次のようになります。

#:kivy 1.0
#:import kivy kivy

<SearchPanel>:
    searchquery: searchquery

    AnchorLayout:
        orientation: 'vertical'
        anchor_x: 'center'
        anchor_y: 'top'
        padding: 10

        TextInput:
            id: searchquery
            text: 'What to search for'
            size_hint_x: 0.98
            size_hint_y: None
            height: 30
            on_enter: root.search()

アプリケーション コードは次のようになります。

# -*- coding: utf-8 -*-
import kivy
kivy.require('1.4.1')

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout


class SearchPanel(AnchorLayout):
    def search(self):
        pass


class ExampleApp(App):
    def build(self):
        return SearchPanel()


if __name__ == '__main__':
    ExampleApp().run()

問題は、アプリを実行すると、次のトレースバックが表示されることです。

Traceback (most recent call last):
  File "example.py", line 24, in <module>
    ExampleApp().run()
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/app.py", line 523, in run
    root = self.build()
  File "example.py", line 20, in build
    return SearchPanel()
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/uix/anchorlayout.py", line 62, in __init__
    super(AnchorLayout, self).__init__(**kwargs)
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/uix/layout.py", line 60, in __init__
    super(Layout, self).__init__(**kwargs)
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/uix/widget.py", line 113, in __init__
    Builder.apply(self)
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/lang.py", line 1217, in apply
    self._apply_rule(widget, rule, rule)
  File "/home/testing/.virtualenvs/kivy2/local/lib/python2.7/site-packages/Kivy-1.4.1-py2.7-linux-x86_64.egg/kivy/lang.py", line 1346, in _apply_rule
    crule, idmap)})
  File "_event.pyx", line 184, in kivy._event.EventDispatcher.bind (/tmp/easy_install-PMy51_/Kivy-1.4.1/kivy/_event.c:2038)
KeyError: 'enter'

コールバックをルート レイアウトにプラグインできないon_enterようです。何が間違っていますか? 私が変更on_enterすると、on_textそれは機能します。

4

1 に答える 1

5

わかりました、それはイベントでon_enterはないことがわかりましたTextInput

on_text_validate代わりに、monoline テキスト入力でのみ機能する whichを使用する必要があります。on_text_validateまたは、必要に応じて、ウィジェットをon_enter関数またはメソッドにバインドできます。

于 2012-10-27T15:33:44.053 に答える