首页 > 解决方案 > 调用相机分辨率参数时获取“NoneType”

问题描述

我正在尝试访问 Kivy 中的相机小部件:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.camera import Camera
from kivy.logger import Logger
import logging
Logger.setLevel(logging.TRACE)


class MainApp(App):
    title = 'wohoo'

    def build(self):
        pass

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

.kv 文件:

BoxLayout:
    Camera:
        id: camera
        resolution: 1280,720
        play: True

完整的错误输出:

[TRACE  ] [Cache       ] Flushed category kv.texture from cache
[TRACE  ] [Cache       ] Flushed category kv.shader from cache
[DEBUG  ] [Shader      ] Fragment compiled successfully
[DEBUG  ] [Shader      ] Vertex compiled successfully
[DEBUG  ] [ImageSDL2   ] Load </home/mark/.local/lib/python3.7/site-packages/kivy/data/glsl/default.png>
[TRACE  ] [Image       ] '/home/mark/.local/lib/python3.7/site-packages/kivy/data/glsl/default.png', populate to textures (1)
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[TRACE  ] [Lang        ] Found 0 rules for <kivy.uix.boxlayout.BoxLayout object at 0x7f14b22402f0>
[TRACE  ] [Lang        ] Found 1 rules for <kivy.uix.camera.Camera object at 0x7f14ab46c830>
 Traceback (most recent call last):
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/lang/builder.py", line 700, in _apply_rule
     setattr(widget_set, key, value)
   File "kivy/weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
   File "kivy/properties.pyx", line 497, in kivy.properties.Property.__set__
   File "kivy/properties.pyx", line 839, in kivy.properties.ListProperty.set
   File "kivy/properties.pyx", line 544, in kivy.properties.Property.set
   File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
   File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
   File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/uix/camera.py", line 103, in _on_index
     resolution=self.resolution, stopped=True)
 TypeError: 'NoneType' object is not callable
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "main.py", line 16, in <module>
     MainApp().run()
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/app.py", line 828, in run
     self.load_kv(filename=self.kv_file)
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/app.py", line 599, in load_kv
     root = Builder.load_file(rfilename)
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/lang/builder.py", line 301, in load_file
     return self.load_string(data, **kwargs)
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/lang/builder.py", line 405, in load_string
     rule_children=rule_children)
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/lang/builder.py", line 707, in _apply_rule
     e), cause=tb)
 kivy.lang.builder.BuilderException: Parser: File "/home/mark/venv/main.kv", line 4:
 ...
       2:    Camera:
       3:        id: camera
 >>    4:        resolution: 1280,720
       5:        play: True
 ...
 TypeError: 'NoneType' object is not callable
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/lang/builder.py", line 700, in _apply_rule
     setattr(widget_set, key, value)
   File "kivy/weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
   File "kivy/properties.pyx", line 497, in kivy.properties.Property.__set__
   File "kivy/properties.pyx", line 839, in kivy.properties.ListProperty.set
   File "kivy/properties.pyx", line 544, in kivy.properties.Property.set
   File "kivy/properties.pyx", line 599, in kivy.properties.Property.dispatch
   File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
   File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
   File "/home/mark/.local/lib/python3.7/site-packages/kivy/uix/camera.py", line 103, in _on_index
     resolution=self.resolution, stopped=True)

我在 Ubuntu 20.04 上使用 Python 3.7,Kivy 版本 1.11.1

(这里的文字是绕过“看起来你的帖子主要是代码”警告,这里的文字是绕过“看起来你的帖子主要是代码”警告,这里的文字是绕过“看起来你的帖子是主要是代码”警告)

标签: kivy

解决方案


推荐阅读