You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行KivyMD+OpenCV代码遇导入错误及python3命令未识别求解决

问题描述

在VSCode中运行结合KivyMD与OpenCV的代码时遇到两个问题:

  1. 触发导入错误:ImportError: cannot import name 'MDBoxLayout' from 'kivy.uix.boxlayout'
  2. 执行重装KivyMD的命令python3 -m pip install --force-reinstall git+https://github.com/HeaTTheatR/KivyMD.git时,提示“python3 未被识别为可执行命令”

相关代码

from kivymd.app import MDApp
from kivy.uix.boxlayout import MDBoxLayout
from kivy.uix.button import MDRaisedButton
from kivy.uix.image import Image
from kivy.clock import Clock
import cv2
import kivy
kivy.require('1.0.6') # replace with your current kivy version ! 

class MainApp(MDApp):
    def build(self):
        layout = MDBoxLayout(orientation='vertical')
        self.image = Image()
        layout.add_widget(self.image)
        self.save_img_button = MDRaisedButton(
            text="CLICK HERE",
            pos_hint = {'center_x':.5, 'center_y':.5},
            size_hint = (None, None))
        self.save_img_button.bind(on_press=self.take_picture)
        layout.add_widget(self.save_img_button)
        self.capture = cv2.VideoCapture(0)
        Clock.schedule_interval(self.load_video, 1.0/30.0)
        return layout
    
    def load_video(self, *args):
        ret, frame = self.capture.read()
        # Frame initialize
        self.image_frame = frame
        buffer = cv2.flip(frame, 0).tostring()
        texture = texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt = 'bgr')
        texture.blit_buffer(buffer, colorfmt='bgr', bufferfmt='ubyte')
        self.image.texture = texture

    def take_picture(self, *args):
        image_name = "picture_at_2_02.png"
        cv2.imwrite(image_name, self.image_frame)
    

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

错误回溯信息

Traceback (most recent call last): File "C:\Kivy\main.py", line 2, in <module> from kivy.uix.boxlayout import MDBoxLayout ImportError: cannot import name 'MDBoxLayout' from 'kivy.uix.boxlayout'
解决方案

问题1:MDBoxLayout导入错误

MDBoxLayout和MDRaisedButton是KivyMD专属组件,不属于原生Kivy库,需修正导入路径:

  • 原错误导入:
    from kivy.uix.boxlayout import MDBoxLayout
    from kivy.uix.button import MDRaisedButton
    
  • 修改为正确路径:
    from kivymd.uix.boxlayout import MDBoxLayout
    from kivymd.uix.button import MDRaisedButton
    

另外,代码中texture.create未导入对应模块,需补充导入并修正调用:

from kivy.graphics.texture import Texture

将texture.create改为Texture.create。

修正后的完整导入代码:

from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import MDRaisedButton
from kivy.uix.image import Image
from kivy.clock import Clock
from kivy.graphics.texture import Texture
import cv2
import kivy
kivy.require('1.0.6') # 替换成你当前的kivy版本

问题2:python3命令未识别

Windows系统默认使用python而非python3作为命令,替换为以下命令即可:

python -m pip install --force-reinstall git+https://github.com/HeaTTheatR/KivyMD.git

若仍无法执行,可尝试使用Windows Python Launcher命令:

py -3 -m pip install --force-reinstall git+https://github.com/HeaTTheatR/KivyMD.git

内容的提问来源于stack exchange,提问作者조하여

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:20:30