python kivy «Произошло исключение: Ошибка утверждения»

#python #python-3.x #kivy #kivy-language

Вопрос:

ошибка, которую я получаю, заключается в том, что

Произошло исключение: Ошибка утвержденияОбъект кнопки в 0x7fa5d1309e40gt; не вызываемый файл «/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py», строка 34, в инициализации личности.отправить.с bind(on_press=самоуправления.отправить) файл «/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py», строка 47, в строй вернуться gridlayout() файл «/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py», строка 50, в SBAP().выполнить()

мой код выглядит следующим образом

 from kivy import * from kivy.app import * from kivy.core.spelling import * from kivy.core.window import * from kivy.lang.builder import * from kivy.properties import * from kivy.uix.colorpicker import * from kivy.uix.gridlayout import * from kivy.uix.scrollview import * from kivy.uix.textinput import * from kivy.uix.widget import * from kivy.uix.button import * from kivy.uix.label import *  label="Source Text"  class gridlayout(GridLayout):  def __init__(self, **kwargs):  super(gridlayout, self).__init__(**kwargs)  self.cols = 1    self.inside = GridLayout()  self.inside.cols = 2   self.inside.add_widget(Label(text=label))  self.SourceText = TextInput(multiline=True)  self.inside.add_widget(self.SourceText)  self.cols = 1   self.submit = Button(text="Submit")  self.submit.bind(on_press=self.submit)    self.add_widget(self.inside)   self.add_widget(self.submit)  def Pressed(self,instance):  # SourceText = self.SourceText.text  # label = SourceText  print("SourceText")   class SBAP(App):  def build(self):  return gridlayout()  if __name__ == '__main__':  SBAP().run()  

Вывод консоли является

 /SBAPgraphicsCardAcellerated.py [INFO ] [Logger ] Record log in /home/derek/.kivy/logs/kivy_21-11-14_53.txt [INFO ] [Kivy ] v2.0.0 [INFO ] [Kivy ] Installed at "/usr/lib/python3/dist-packages/kivy/__init__.py" [INFO ] [Python ] v3.8.10 (default, Sep 28 2021, 16:10:42)  [GCC 9.3.0] [INFO ] [Python ] Interpreter at "/usr/bin/python3" [INFO ] [Factory ] 186 symbols loaded [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored) [CRITICAL] [Spelling ] Unable to find any valuable Spelling provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes enchant - ModuleNotFoundError: No module named 'enchant'  File "/usr/lib/python3/dist-packages/kivy/core/__init__.py", line 58, in core_select_lib  mod = __import__(name='{2}.{0}.{1}'.format(  File "/usr/lib/python3/dist-packages/kivy/core/spelling/spelling_enchant.py", line 12, in lt;modulegt;  import enchant  [INFO ] [Window ] Provider: sdl2 [INFO ] [GL ] Using the "OpenGL" graphics system [INFO ] [GL ] Backend used lt;sdl2gt; [INFO ] [GL ] OpenGL version lt;b'4.6 (Compatibility Profile) Mesa 21.0.3'gt; [INFO ] [GL ] OpenGL vendor lt;b'AMD'gt; [INFO ] [GL ] OpenGL renderer lt;b'AMD Radeon(TM) Vega 11 Graphics (RAVEN, DRM 3.40.0, 5.11.0-40-generic, LLVM 12.0.0)'gt; [INFO ] [GL ] OpenGL parsed version: 4, 6 [INFO ] [GL ] Shading version lt;b'4.60'gt; [INFO ] [GL ] Texture max size lt;16384gt; [INFO ] [GL ] Texture max units lt;32gt; [INFO ] [Window ] auto add sdl2 input provider [INFO ] [Window ] virtual keyboard not allowed, single mode, not docked [INFO ] [Text ] Provider: sdl2 [INFO ] [Clipboard ] Provider: xclip [INFO ] [CutBuffer ] cut buffer support enabled  Traceback (most recent call last):  File "/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py", line 50, in lt;modulegt;  SBAP().run()  File "/usr/lib/python3/dist-packages/kivy/app.py", line 949, in run  self._run_prepare()  File "/usr/lib/python3/dist-packages/kivy/app.py", line 919, in _run_prepare  root = self.build()  File "/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py", line 47, in build  return gridlayout()  File "/home/derek/Documents/programs/SBAPga/SBAPgraphicsCardAcellerated.py", line 34, in __init__  self.submit.bind(on_press=self.submit)  File "kivy/_event.pyx", line 421, in kivy._event.EventDispatcher.bind  AssertionError: lt;kivy.uix.button.Button object at 0x7f5adc04d5f0gt; is not callable   

Комментарии:

1. Вы сохраняете объект кнопки self.submit и передаете его в on_press обратный вызов. Это не имеет смысла. Что вы хотите, чтобы произошло, когда кнопка нажата? Вы должны передавать вызываемый объект, который делает это.

2. предполагается, что он изменит метку, которую я прокомментировал, потому что я отлаживал все остальное

3. @Марк, что вы имеете в виду, не могли бы вы подробнее рассказать?

4. В этой строке self.submit.bind(on_press=self.submit) вы должны передать функцию on_press . self.submit это не функция.

5. @Mark спасибо, решено, как мне отметить это как ответ?