0

我正在构建一个德语词典应用程序,其中有一个选项可以在 Kivy python 中获取德语名词的性别,并且我希望在文本输入中有一个 unfocus 事件,因此只有当用户从 'MDTextFieldRound' 不聚焦时,搜索方法可以是调用它将根据在 MDTextField 中输入的前缀给出所有德语名词的列表......这是主要的 python 文件:

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
from kivymd.uix.textfield import MDTextFieldRound
from mst import genderGetter
from kivymd.uix.list import TwoLineListItem


class MenuScreen(Screen):
   pass


class GenderGameScreen(Screen):
   pass


class GenderScreen(Screen):
    words = list(genderGetter().keys())

    def get_len(self):
        return len(self.get_text())

    def search(self):
        self.get_text()

        self.create_list()

    def get_text(self):
        gen = self.ids.gender.text.lower().capitalize()
        return gen

    def create_list(self):
        for word in self.words:
            if self.get_text() in word[0:self.get_len()]:
                items = TwoLineListItem(text=word, secondary_text=genderGetter().get(word))
                self.ids.contain.add_widget(items)


class GenderText(MDTextFieldRound):
    pass


class TranslatorScreen(Screen):
    pass


sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))


class GermanApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "Blue"
        screen = Builder.load_file('kv files/main.kv')
        return screen


if __name__ == "__main__":
   app = GermanApp()
   app.run()

这是gender.kv的kivy文件

<GenderScreen>:
id:genders
name:'gender'

ScrollView:
    size_hint:(.5,.8)
    MDList:
        id: contain
MDTextFieldRound:
    id: gender
    hint_text: "Enter the German noun"
    helper_text: "Correct one"
    helper_text_mode: "on_focus"
    pos_hint : {"center_x" : 0.45 , "center_y" : 0.9}
    icon_right_color:app.theme_cls.primary_color
    size_hint_x : 0.8
    on_text:root.search()

我仍然是 kivy 的菜鸟,所以代码中可能有很多潜在的错误......请考虑..

4

0 回答 0