运行KivyMD+OpenCV代码遇导入错误及python3命令未识别求解决
问题描述
在VSCode中运行结合KivyMD与OpenCV的代码时遇到两个问题:
- 触发导入错误:
ImportError: cannot import name 'MDBoxLayout' from 'kivy.uix.boxlayout' - 执行重装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,提问作者조하여
相关产品推荐
相关产品推荐

