kivy 错误 - kivy.factory.FactoryException: 未知类<WindowManager>



这是我的main.py代码-

import pyaudio
import speech_recognition as sr
import pyttsx3
from playsound import playsound
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle
from kivy.graphics import Color
from kivy.uix.image import Image
from kivy.lang import Builder
kv = Builder.load_file('audibuddy.kv')
class MainWindow(Screen,FloatLayout):
def __init__(self):
super(MainWindow, self).__init__()
self.add_widget(Touch())
class speechtotext(Screen):
pass
class texttospeech(Screen):
pass
class WindowManager(ScreenManager):
pass
class Touch(Widget):            
def on_touch_down(self,touch):
print("Mouse down",touch)
def on_touch_move(self,touch):
print("Mouse move",touch)
def on_touch_up(self,touch):
print("Mouse up",touch)

class Audibuddy(App):

def build(self):
return kv
if __name__  ==  "__main__":
Audibuddy().run()

这是我的。kv文件-

WindowManager:
MainWindow:
speechtotext:
texttospeech:
<MainWindow>:
GridLayout:
Button:
font_size: 40
color: 1,1,1,1




canvas:
Color:
rgba:0.16862745098,0.16862745098,0.16862745098,1
Rectangle:
pos:self.pos
size :self.size
BoxLayout:
pos_hint:{'top':1.456}
size_hint:2,0.57

canvas:
Color:
rgba:0.09803921568,0.13725490196,0.17647058823,1
Rectangle:
pos:self.pos
size:self.size


BoxLayout:
pos_hint:{'left':1324,'top':1.44}
Image:
source:'image-removebg-preview(6).png'
allow_strech:True
keep_ratio:False

Button:
id:settings_btn
background_normal:"image-removebg-preview(10).png"
background_down:"image-dark.png"
allow_strech:True
keep_ratio:False
pos_hint:{"top":1,"right":0.99}
size_hint: 0.09,0.09

Label:
text:"AudiBuddy"
pos_hint:{"left":1, "top":1}
font_size:40
Button:
id:speechtotext_btn
text:"Speech to Text"
pos_hint:{"x":0.15,"top":0.7}
size_hint: 0.7,0.1
background_colour:0.3,0.2,0,5,1
Button:
id:texttospeech_btn
text:"Text to Speech"
pos_hint:{"x":0.15,"top":0.55}
size_hint: 0.7,0.1
Button:
id:exitapp_btn
text:"Exit Application"
pos_hint:{"x":0.15,"top":0.4}
size_hint: 0.7,0.1
<speechtotext>:
<texttospeech>:

,它给了我这个错误:

File "C:Usersadmin_tempDocumentsGitHubaudibuddymain.py", line 16, in <module>
kv = Builder.load_file('audibuddy.kv')
File "D:Program Filesanacondalibsite-packageskivylangbuilder.py", line 306, in load_file
return self.load_string(data, **kwargs)
File "D:Program Filesanacondalibsite-packageskivylangbuilder.py", line 404, in load_string
widget = Factory.get(parser.root.name)(__no_builder=True)
File "D:Program Filesanacondalibsite-packageskivyfactory.py", line 146, in __getattr__
raise FactoryException('Unknown class <%s>' % name)
kivy.factory.FactoryException: Unknown class <WindowManager>

我不知道我的代码有什么问题。我是新来的,这是我第一次申请。我试图把我之前设计的主窗口ui放在主窗口类里面。还有,谁能快点告诉我答案,因为我明天必须提交项目。

编辑:我稍微编辑了一下代码,现在看起来是这样的main.py
import pyaudio
import speech_recognition as sr
import pyttsx3
from playsound import playsound
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle
from kivy.graphics import Color
from kivy.uix.image import Image
from kivy.lang import Builder
kv = Builder.load_file('audibuddy.kv')
class Touch(Widget):            
def on_touch_down(self,touch):
print("Mouse down",touch)
def on_touch_move(self,touch):
print("Mouse move",touch)
def on_touch_up(self,touch):
print("Mouse up",touch)
class MainWindow(Screen):
pass
class speechtotext(Screen):
pass
class texttospeech(Screen):
pass
class WindowManager(ScreenManager):
pass

class Audibuddy(App):

def build(self):
return kv
if __name__  ==  "__main__":
Audibuddy().run()

和。kv文件-

WindowManager:
MainWindow:
speechtotext:
texttospeech:
<MainWindow>:
Button:
font_size: 40
color: 1,1,1,1




canvas:
Color:
rgba:0.16862745098,0.16862745098,0.16862745098,1
Rectangle:
pos:self.pos
size :self.size
BoxLayout:
pos_hint:{'top':1.456}
size_hint:2,0.57

canvas:
Color:
rgba:0.09803921568,0.13725490196,0.17647058823,1
Rectangle:
pos:self.pos
size:self.size


BoxLayout:
Label:
text:"audibuddy"
pos_hint{"top":1,"left":1}


Button:
id:settings_btn
background_normal:"image-removebg-preview(10).png"
background_down:"image-dark.png"
allow_strech:True
keep_ratio:False
pos_hint:{"top":1,"right":0.99}
size_hint: 0.09,0.09

Label:
text:"AudiBuddy"
pos_hint:{"left":1, "top":1}
size_hint:10,10
font_size:40
Button:
id:speechtotext_btn
text:"Speech to Text"
pos_hint:{"x":0.15,"top":0.7}
size_hint: 0.7,0.1
background_colour:0.3,0.2,0,5,1
Button:
id:texttospeech_btn
text:"Text to Speech"
pos_hint:{"x":0.15,"top":0.55}
size_hint: 0.7,0.1
Button:
id:exitapp_btn
text:"Exit Application"
pos_hint:{"x":0.15,"top":0.4}
size_hint: 0.7,0.1
<speechtotext>:
<texttospeech>:
但现在我得到了一个不同的错误-
File "C:Usersadmin_tempDocumentsGitHubaudibuddymain.py", line 16, in <module>
kv = Builder.load_file('audibuddy.kv')
File "D:Program Filesanacondalibsite-packageskivylangbuilder.py", line 306, in load_file
return self.load_string(data, **kwargs)
File "D:Program Filesanacondalibsite-packageskivylangbuilder.py", line 373, in load_string
parser = Parser(content=string, filename=fn)
File "D:Program Filesanacondalibsite-packageskivylangparser.py", line 402, in __init__
self.parse(content)
File "D:Program Filesanacondalibsite-packageskivylangparser.py", line 511, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "D:Program Filesanacondalibsite-packageskivylangparser.py", line 614, in parse_level
_objects, _lines = self.parse_level(
File "D:Program Filesanacondalibsite-packageskivylangparser.py", line 674, in parse_level
if current_property[:3] == 'on_':
TypeError: 'NoneType' object is not subscriptable

朋友不要这样做

class Audibuddy(App):
def build(self):
return kv

你需要做的就是删除build函数

class Audibuddy(App):
pass 

,如果这不起作用,然后只是做一个kv文件相同的名称为您的项目,并做同样的事情,我希望这有助于,并抱歉为糟糕的解释

这可能是因为你正在使用anaconda如果您尝试使用其他替代方法

最新更新