'Why does importing kivymd in .kv file give me error. Even though its already installed
I tried making a basic app using kivy. I have installed both kivy and kivymd on my virtual environment. I have also activated the virtual environment for this project. But when I run the program it does not work.
This is the error message
1:#:kivy 2.0.0
>> 2:#:kivymd 0.104.2
3:#:MDFloatingActionButton kivymd.uix.button.MDFloatingActionButton
4:
...
Unknown directive
This is the output of pip freeze
apt-clone==0.2.1
apturl==0.5.2
beautifulsoup4==4.8.2
blinker==1.4
Brlapi==0.7.0
ccsm==0.9.14.1
certifi==2019.11.28
chardet==3.0.4
command-not-found==0.3
compizconfig-python==0.9.14.1
configobj==5.0.6
cryptography==2.8
cupshelpers==1.0
dbus-python==1.2.16
defer==1.0.6
distro==1.4.0
docutils==0.18.1
entrypoints==0.3
grpcio==1.16.1
httplib2==0.14.0
idna==2.8
ifaddr==0.1.6
keyring==18.0.1
Kivy==2.0.0
Kivy-Garden==0.1.4
kivymd==0.104.2
launchpadlib==1.10.13
lazr.restfulclient==0.14.2
lazr.uri==1.0.3
louis==3.12.0
lxml==4.5.0
Mako==1.1.0
MarkupSafe==1.1.0
netifaces==0.10.4
nose==1.3.7
oauthlib==3.1.0
onboard==1.4.1
pexpect==4.6.0
Pillow==7.0.0
protobuf==3.6.1
psutil==5.5.1
pycairo==1.16.2
pycrypto==2.6.1
pycups==1.9.73
pycurl==7.43.0.2
Pygments==2.3.1
PyGObject==3.36.0
PyICU==2.4.2
PyJWT==1.7.1
pymacaroons==0.13.0
PyNaCl==1.3.0
pyparted==3.11.2
python-apt==2.0.0
python-debian===0.1.36ubuntu1
python-xapp==2.0.1
python-xlib==0.23
pyxdg==0.26
PyYAML==5.3.1
reportlab==3.5.34
requests==2.22.0
requests-unixsocket==0.2.0
SecretStorage==2.3.1
setproctitle==1.1.10
simplejson==3.16.0
six==1.14.0
soupsieve==1.9.5
systemd-python==234
ubuntu-advantage-tools==20.3
ubuntu-drivers-common==0.0.0
ufw==0.36
Unidecode==1.1.1
urllib3==1.25.8
wadllib==1.3.3
xkit==0.0.0
zeroconf==0.24.4
So, I think all the dependencies are satisfied.
So this is Myapp.py
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
class MenuScreen(Screen):
pass
class SplitScreen(Screen):
pass
class FolderScreen(Screen):
pass
class UploadScreen(Screen):
pass
sm= ScreenManager()
sm.add_widget(MenuScreen(name = "Menu") )
# In The above statement we put name of MenuScreen
# to associate this class to MenuScreen in screen_nav.kv
# Whose name is set to Menu
sm.add_widget(SplitScreen(name = "Split") )
sm.add_widget(FolderScreen(name = "Folders_input") )
sm.add_widget(UploadScreen(name = "upload"))
class SplitV(MDApp):
def build(self):
scrn= Builder.load_file('screen_nav.kv')
# scrn= Builder.load_file('screen_nav2.kv')
# scrn2 = Builder.load_string(sh)
# scrn= Builder.load_file('screen_nav_new.kv')
return scrn
SplitV().run()
This is screen_nav.kv
#:kivy 2.0.0
#:kivymd 0.104.2
#:MDFloatingActionButton kivymd.uix.button.MDFloatingActionButton
ScreenManager:
MenuScreen:
FolderScreen:
SplitScreen:
UploadScreen:
<MenuScreen>:
name: 'Menu'
BoxLayout:
orientation:'vertical'
MDFloatingActionButton:
text: 'Split'
pos_hint: {"center_x": 0.5,"center_y": 0.5}
on_press: root.manager.current = 'Split'
font_size: 20
background_color: (1, 1, 0, 1)
MDFloatingActionButton:
text: 'Settings'
pos_hint: {"center_x": 0.5,"center_y": 0.4}
on_press: root.manager.current = 'Settings'
font_size: 20
background_color: (1, 1, 0, 1)
<FolderScreen>:
name: 'Folders_input'
Label:
text: "Folder selection Screen"
pos_hint: {"center_x": 0.5,"center_y": 0.5}
<SplitScreen>:
name:'Split'
MDLabel:
text: 'This is Split screen'
halign: 'center'
font_size: 20
MDRectangleFlatButton:
text: 'Back'
pos_hint: {"center_x": 0.5,"center_y": 0.2}
font_size: 20
on_press: root.manager.current = 'Menu'
MDRectangleFlatButton:
text: 'Upload'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.3}
on_press: root.manager.current = 'upload'
<UploadScreen>
name:'upload'
MDLabel:
text: 'This is upload screen'
halign: 'center'
font_size: 20
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
The import instructions for the kivy language in the official site is in the same pattern, but it does not work.
What could be the possible solutions.
It would be awesome if you could also suggest me a good kivy extension for vs code.
I am using Mint Mate 20 (Ulyana)
Solution 1:[1]
Thanks everyone, I figured it out. I just removed imports other than kivy in the screen_nav.kv file and it worked.
See this is the screen_nav.kv content
#:kivy 2.0.0
ScreenManager:
# 1
MenuScreen:
SettingsScreen:
# A1
FolderScreen:
# A2'
WorkHomeScreen:
StatusScreen:
CustomScreen:
DurationScreen:
DivisionScreen:
SplitScreen:
UploadScreen:
# 1
<MenuScreen>:
name: 'Menu'
# 1
MDRectangleFlatButton:
text: 'Split'
pos_hint: {"center_x": 0.5,"center_y": 0.4}
on_press: root.manager.current = 'Folders_input'
# Going to A1
font_size: 20
background_color: (1, 1, 0, 1)
MDRectangleFlatButton:
text: 'Settings'
pos_hint: {"center_x": 0.5,"center_y": 0.3}
on_press: root.manager.current = 'Settings'
font_size: 20
background_color: (1, 1, 0, 1)
<SettingsScreen>:
name: 'Settings'
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
MDLabel:
text:'My new settings screen'
halign: 'center'
font_size: 34
pos_hint: {"center_x": 0.5,"center_y": 0.5}
# A1
<FolderScreen>:
name: 'Folders_input'
MDLabel:
text: "Folder selection Screen"
# pos_hint: {"center_x": 0.5,"center_y": 0.5}
halign: 'center'
font_size: 32
MDRectangleFlatButton:
text: 'Done'
pos_hint: {"center_x": 0.5,"center_y": 0.2}
font_size: 20
on_press: root.manager.current = 'Work-Home'
# Going to A2'
# A2'
<WorkHomeScreen>:
name: 'Work-Home'
MDRectangleFlatButton:
text: 'Whatsapp Status/ Instagram stories'
pos_hint: {"center_x": 0.5,"center_y": 0.9}
on_press: root.manager.current = 'Folders_input'
font_size: 20
background_color: (1, 1, 0, 1)
MDRectangleFlatButton:
text: 'Custom'
pos_hint: {"center_x": 0.5,"center_y": 0.8}
on_press: root.manager.current = 'Custom'
font_size: 20
background_color: (1, 1, 0, 1)
MDRectangleFlatButton:
text: 'Duration'
pos_hint: {"center_x": 0.5,"center_y": 0.7}
on_press: root.manager.current = 'Duration'
font_size: 20
background_color: (1, 1, 0, 1)
MDRectangleFlatButton:
text: 'Division/Parts'
pos_hint: {"center_x": 0.5,"center_y": 0.6}
on_press: root.manager.current = 'Division'
font_size: 20
background_color: (1, 1, 0, 1)
# StatusScreen:
# CustomScreen:
# DurationScreen:
# DivisionScreen:
<StatusScreen>
name: 'Status'
MDLabel:
text: "Status Screen"
pos_hint: {"center_x": 0.5,"center_y": 0.5}
font_size: 32
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
<CustomScreen>
name: 'Custom'
MDLabel:
text: "Custom Screen"
pos_hint: {"center_x": 0.5,"center_y": 0.5}
font_size: 32
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
<DurationScreen>
name: 'Duration'
MDLabel:
text: "Duration Screen"
pos_hint: {"center_x": 0.5,"center_y": 0.5}
font_size: 32
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
<DivisionScreen>
name: 'Division'
MDLabel:
text: "Division Screen"
pos_hint: {"center_x": 0.5,"center_y": 0.5}
font_size: 32
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
# D1
<SplitScreen>:
name:'Split'
MDLabel:
text: 'This is Split screen'
halign: 'center'
font_size: 20
MDRectangleFlatButton:
text: 'Back'
pos_hint: {"center_x": 0.5,"center_y": 0.2}
font_size: 20
on_press: root.manager.current = 'Menu'
MDRectangleFlatButton:
text: 'Upload'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.3}
on_press: root.manager.current = 'upload'
<UploadScreen>
name:'upload'
MDLabel:
text: 'This is upload screen'
halign: 'center'
font_size: 20
MDRectangleFlatButton:
text: 'Back'
font_size: 20
pos_hint: {"center_x": 0.5,"center_y": 0.2}
on_press: root.manager.current = 'Menu'
Well everything seems messy and things break after every 2 to 3 simple edits in UI code so I am thinking of switching to Flutter
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Atul Anand Oraon |
