Kivy安卓实战 | 工具箱: 导航栏 - 图1
© Karobben

由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址

  1. CryptoWatch-Kivy 1.13
  2. Kivy 2.0.0
  3. Kivy-Garden 0.1.4
  4. kivy-garden.wordcloud 1.0.0
  5. kivymd 0.104.2.dev0

Navigation

Example of Navigation: KivyMD GitHub

Documentation: Kivymd

Attention: “MDNavigationLayout” was abandoned, using “NavigationLayout” as substitute.

  1. Root:
  2. - MDNavigationLayout:
  3. + NavigationLayout:
  4. ScreenManager:
  5. Screen_1:
  6. Screen_2:

Example 1

  1. from kivy.lang import Builder
  2. from kivy.uix.boxlayout import BoxLayout
  3. from kivymd.app import MDApp
  4. KV = '''
  5. Screen:
  6. NavigationLayout:
  7. ScreenManager:
  8. Screen:
  9. BoxLayout:
  10. orientation: 'vertical'
  11. MDToolbar:
  12. title: "Navigation Drawer"
  13. elevation: 10
  14. left_action_items: [['menu', lambda x: nav_drawer.set_state("open")]]
  15. Widget:
  16. MDNavigationDrawer:
  17. id: nav_drawer
  18. ContentNavigationDrawer:
  19. '''
  20. class ContentNavigationDrawer(BoxLayout):
  21. pass
  22. class TestNavigationDrawer(MDApp):
  23. def build(self):
  24. return Builder.load_string(KV)
  25. TestNavigationDrawer().run()

Separate the KV and PY

  1. mkdir Layout
  2. tree
  1. .
  2. ├── Layout
  3. └── Navigation_Draw.kv
  4. └── main.py
  5. 1 directory, 2 files

KV file ``` MDNavigationDrawer: id: nav_drawer

  1. ```
  2. </details>
  3. ```python
  4. from kivy.uix.screenmanager import Screen
  5. from kivymd.uix.button import MDRectangleFlatButton
  6. from kivy.lang import Builder
  7. from kivymd.app import MDApp
  8. def OPEN(file):
  9. return open(file).read()
  10. class MainApp(MDApp):
  11. def F_test(self, *args):
  12. print(123)
  13. def build(self):
  14. screen = Screen()
  15. Widget_navi = Builder.load_string(OPEN("Layout/Navigation_Draw.kv"))
  16. screen.add_widget(Widget_navi)
  17. screen.add_widget(
  18. MDRectangleFlatButton(
  19. text="Hello, World",
  20. pos_hint={"center_x": 0.5, "center_y": 0.5},
  21. on_release = self.F_test
  22. ))
  23. return screen
  24. MainApp().run()

Tags

Example: GitHub

  1. from kivy.uix.screenmanager import Screen
  2. from kivymd.uix.button import MDRectangleFlatButton
  3. from kivy.lang import Builder
  4. from kivymd.uix.floatlayout import MDFloatLayout
  5. from kivymd.uix.tab import MDTabsBase
  6. from kivymd.app import MDApp
  7. def OPEN(file):
  8. return open(file).read()
  9. class Tab(MDFloatLayout, MDTabsBase):
  10. '''Class implementing content for a tab.'''
  11. class MainApp(MDApp):
  12. def F_test(self, *args):
  13. print(123)
  14. def build(self):
  15. screen = Screen()
  16. # loading Navigation (left)
  17. Widget_navi = Builder.load_string(OPEN("Layout/Navigation_Draw.kv"))
  18. # loading navigation tags
  19. Widget_tabs = Builder.load_string(OPEN("Layout/Navigation_Tabs.kv"))
  20. self.Widget_tabs = Widget_tabs
  21. screen.add_widget(Widget_tabs)
  22. screen.add_widget(Widget_navi)
  23. return screen
  24. # Functions for Navigation Tab
  25. def on_start(self):
  26. Tab1 = Tab(text="alarm")
  27. Tab1.add_widget(
  28. MDRectangleFlatButton(
  29. text="Hello, World",
  30. pos_hint={"center_x": 0.5, "center_y": 0.5},))
  31. self.Widget_tabs.ids.tabs.add_widget(Tab1)
  32. self.Widget_tabs.ids.tabs.add_widget(Tab(text="alarm-bell"))
  33. # Functions for Navigation Tab Switch
  34. def on_tab_switch(
  35. self, instance_tabs, instance_tab, instance_tab_label, tab_text):
  36. '''Called when switching tabs.
  37. :type instance_tabs: <kivymd.uix.tab.MDTabs object>;
  38. :param instance_tab: <__main__.Tab object>;
  39. :param instance_tab_label: <kivymd.uix.tab.MDTabsLabel object>;
  40. :param tab_text: text or name icon of tab;
  41. '''
  42. instance_tab.ids.label.text = tab_text
  43. MainApp().run()

KV file: Navigation_Tabs.kv``` MDToolbar: title: “Example Tabs”

MDTabs: id: tabs text: “1” on_ref_press: app.on_ref_press(*args)

  1. 1 directory, 3 files

First Function

Kivy tabs Convert atcg to ATCG

  1. touch Layout/Seq.kv
  2. tree
  1. .
  2. ├── Layout
  3. ├── Navigation_Draw.kv
  4. ├── Navigation_Tabs.kv
  5. └── Seq.kv
  6. ├── lib
  7. └── bio_seq.py
  8. ├── libWidget
  9. └── Seq.py
  10. └── main.py

Seq.kv``` MDBoxLayout:

  1. id: boxs
  2. orientation: "vertical"
  3. functions: None#{"aA":"a"}
  4. label_c: 0, 0, 1, 1
  5. MDTextField:
  6. id: seq_input
  7. hint_text: "Input DNA Hear"
  8. pos_hint: {"center_x": .5}
  9. MDIconButton:
  10. id: upper
  11. icon: "android"
  12. user_font_size: "64sp"
  13. on_release: boxs.functions#["aA"]
  14. pos_hint: {"center_x": .5}
  15. MDLabel:
  16. id: seq_result
  17. text: "Result shows Herer"
  18. color: boxs.label_c
  19. pos_hint: {"center_x": .5}
  1. ```
  2. </details>
  3. ```python Seq.py
  4. #from kivy.lang import Builder
  5. from kivy.lang import Builder
  6. class FunctionWidget():
  7. def OPEN(self, file):
  8. return open(file).read()
  9. def PP(self):
  10. #self.print(self.Function_page.ids.seq_input.text)
  11. self.Function_page.ids.seq_result.text = self.Function_page.ids.seq_input.text.upper()
  12. def main(self):
  13. self.Function_page = Builder.load_string(self.OPEN("Layout/Seq.kv"))
  14. self.Function_page.ids.upper.on_release = self.PP
  15. return self.Function_page
  1. from kivy.uix.screenmanager import Screen
  2. from kivymd.uix.button import MDRectangleFlatButton
  3. from kivy.lang import Builder
  4. from kivymd.uix.floatlayout import MDFloatLayout
  5. from kivymd.uix.tab import MDTabsBase
  6. from kivymd.app import MDApp
  7. # Function libs
  8. def OPEN(file):
  9. return open(file).read()
  10. class Tab(MDFloatLayout, MDTabsBase):
  11. '''Class implementing content for a tab.'''
  12. class MainApp(MDApp):
  13. def F_test(self, *args):
  14. print(123)
  15. def build(self):
  16. screen = Screen()
  17. # loading Navigation (left)
  18. Widget_navi = Builder.load_string(OPEN("Layout/Navigation_Draw.kv"))
  19. # loading navigation tags
  20. Widget_tabs = Builder.load_string(OPEN("Layout/Navigation_Tabs.kv"))
  21. self.Widget_tabs = Widget_tabs
  22. # loading The Function pages
  23. # Loading Sequencs function page
  24. screen.add_widget(Widget_tabs)
  25. screen.add_widget(Widget_navi)
  26. return screen
  27. # Functions for Navigation Ta
  28. def on_start(self):
  29. from lib.bio_seq import Bio as FunBioSeq
  30. Fun = FunBioSeq()
  31. print(Fun.List())
  32. def PP():
  33. print(Function_page.ids.seq_input.text)
  34. Function_page.ids.seq_result.text = Function_page.ids.seq_input.text.upper()
  35. Fun = FunBioSeq()
  36. List = {"Seq":{'icon':"dna",'title':"Sequencs Tools"}}
  37. Tab1 = Tab(text="Bio")
  38. Tab1.add_widget(
  39. MDRectangleFlatButton(
  40. text="Hello, World",
  41. pos_hint={"center_x": 0.5, "center_y": 0.5},))
  42. self.Widget_tabs.ids.tabs.add_widget(Tab1)
  43. for i in List.keys():
  44. tmp_tab = Tab(text=List[i]['icon'])
  45. #Function = Builder.load_string(OPEN("Layout/"+i+".kv"))
  46. from libWidget.Seq import FunctionWidget
  47. Fun = FunctionWidget()
  48. tmp_tab.add_widget(Fun.main())
  49. self.Widget_tabs.ids.tabs.add_widget(tmp_tab)
  50. # Functions for Navigation Tab Switch
  51. def on_tab_switch(
  52. self, instance_tabs, instance_tab, instance_tab_label, tab_text):
  53. '''Called when switching tabs.
  54. :type instance_tabs: <kivymd.uix.tab.MDTabs object>;
  55. :param instance_tab: <__main__.Tab object>;
  56. :param instance_tab_label: <kivymd.uix.tab.MDTabsLabel object>;
  57. :param tab_text: text or name icon of tab;
  58. '''
  59. instance_tab.ids.label.text = tab_text
  60. MainApp().run()

Kivy安卓实战 | 工具箱: 导航栏 - 图3
GitHub Repository: Karobben Toolbox
Android Release: Karobben Toolbox


Enjoy~
本文由Python腳本GitHub/語雀自動更新
由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址
GitHub: Karobben
Blog:Karobben
BiliBili:史上最不正經的生物狗