首页 > 解决方案 > 如何在 python 中使用 id 的 kivy?

问题描述

由于某种原因,此代码无法正常工作。我正在尝试使函数“ definir() ”来查找TextInput (id=roupa)但没有按预期工作。

def nomeapp(self):
    close_button = MDFlatButton(text="Cancelar", on_release=self.close_dialog_nomeapp)
    confirme_button = MDFlatButton(text="Definir",on_release=self.definir)
    self.nomeappp = MDDialog(title="Definir Nome",
                            type="custom",
                            content_cls=TextInput(text="This is a test",id="roupa"),
                            text="Aqui vai entrar um textinput",
                            size_hint=(0.7, 1.), buttons=[close_button, confirme_button])
    self.nomeappp.open()


def definir(self,obj):
    print(self.ids.roupa.text)
    self.nomeappp.dismiss()


def close_dialog_nomeapp(self, obj):
    self.nomeappp.dismiss()

非常感谢某人为解决上述问题提供的一些指导/帮助。提前致谢。

标签: pythonkivymd

解决方案


这是错误

追溯

(most recent call last):
   File "properties.pyx", line 860, in kivy.properties.ObservableDict.__getattr__
 KeyError: 'roupa'
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "C:\dev\Python\ContadorDeJohrei\main.py", line 438, in <module>
     start.run()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\app.py", line 855, in run
     runTouchApp()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\base.py", line 504, in runTouchApp
     EventLoop.window.mainloop()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\core\window\window_sdl2.py", line 747, in mainloop
     self._mainloop()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\core\window\window_sdl2.py", line 479, in _mainloop
     EventLoop.idle()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\base.py", line 342, in idle
     self.dispatch_input()
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\base.py", line 327, in dispatch_input
     post_dispatch_input(*pop(0))
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\base.py", line 293, in post_dispatch_input
     wid.dispatch('on_touch_up', me)
   File "_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivymd\uix\behaviors\ripplebehavior.py", line 245, in on_touch_up
     return super().on_touch_up(touch)
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivymd\uix\button.py", line 969, in on_touch_up
     return super().on_touch_up(touch)
   File "C:\Users\Igor\anaconda3\envs\k39\lib\site-packages\kivy\uix\behaviors\button.py", line 179, in on_touch_up
     self.dispatch('on_release')
   File "_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
   File "_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
   File "_event.pyx", line 1138, in kivy._event.EventObservers._dispatch
   File "C:\dev\Python\ContadorDeJohrei\main.py", line 343, in definir
     print(self.ids.roupa.text)
   File "properties.pyx", line 863, in kivy.properties.ObservableDict.__getattr__
 AttributeError: 'super' object has no attribute '__getattr__'

推荐阅读