Я изучаю Python + Kivy, и окно автоматически закрывается при добавлении события к кнопке. Однако, когда я добавляю кнопку, которая ничего не делает, приложение прекрасно работает.
Я пытался добавить кнопку без событий и прошел через все виды уроков и форумов. Кажется, ничто не поможет. Кроме того, я скопировал / вставил строку с кнопкой в моем коде, потом подумав, что произошла опечатка. Это не сработало.
Импорт:
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
Кнопка и событие:
self.submit = Button(text="Submit", font_size=20)
self.submit.bind(on_press=self.submit)
self.add_widget(self.submit)
Определенная функция:
def submit(self, instance):
print('You pressed the button!')
Выход терминала:
bob@I-am-Bob:~/Programs/Kivy_Python$ python3 main.py
[INFO ] [Logger ] Record log in /home/bob/.kivy/logs/kivy_19-07-02_17.txt
[INFO ] [Kivy ] v1.11.1
[INFO ] [Kivy ] Installed at "/home/bob/.local/lib/python3.6/site-packages/kivy/__init__.py"
[INFO ] [Python ] v3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0]
[INFO ] [Python ] Interpreter at "/usr/bin/python3"
[INFO ] [Factory ] 184 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] Backend used <sdl2>
[INFO ] [GL ] OpenGL version <b'3.0 Mesa 18.0.5'>
[INFO ] [GL ] OpenGL vendor <b'Intel Open Source Technology Center'>
[INFO ] [GL ] OpenGL renderer <b'Mesa DRI Intel(R) Haswell Mobile '>
[INFO ] [GL ] OpenGL parsed version: 3, 0
[INFO ] [GL ] Shading version <b'1.30'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Clipboard ] Provider: gtk3(['clipboard_xclip', 'clipboard_xsel', 'clipboard_dbusklipper'] ignored)
[CRITICAL] [Cutbuffer ] Unable to find any valuable Cutbuffer 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
xclip - FileNotFoundError: [Errno 2] No such file or directory: 'xclip': 'xclip'
File "/home/bob/.local/lib/python3.6/site-packages/kivy/core/__init__.py", line 63, in core_select_lib
fromlist=[modulename], level=0)
File "/home/bob/.local/lib/python3.6/site-packages/kivy/core/clipboard/clipboard_xclip.py", line 17, in <module>
p = subprocess.Popen(['xclip', '-version'], stdout=subprocess.PIPE)
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
xsel - FileNotFoundError: [Errno 2] No such file or directory: 'xsel': 'xsel'
File "/home/bob/.local/lib/python3.6/site-packages/kivy/core/__init__.py", line 63, in core_select_lib
fromlist=[modulename], level=0)
File "/home/bob/.local/lib/python3.6/site-packages/kivy/core/clipboard/clipboard_xsel.py", line 16, in <module>
p = subprocess.Popen(['xsel'], stdout=subprocess.PIPE)
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
Traceback (most recent call last):
File "main.py", line 43, in <module>
Hello().run()
File "/home/bob/.local/lib/python3.6/site-packages/kivy/app.py", line 829, in run
root = self.build()
File "main.py", line 40, in build
return HiGrid()
File "main.py", line 32, in __init__
self.submit.bind(on_press=self.submit)
File "kivy/_event.pyx", line 419, in kivy._event.EventDispatcher.bind
AssertionError: <kivy.uix.button.Button object at 0x7ff3e36a15f8> is not callable
Я ожидаю, что окно останется открытым, и терминал напечатает «Вы нажали кнопку!». Однако окно закрывается автоматически.