Python 如何将屏幕管理器添加到我的KIVYMD代码中,而不是在仅kv文件的类方法中[SOLVED}
我是新来的,kivymd有个小问题。这里有人能帮我吗 这是我的main.py文件Python 如何将屏幕管理器添加到我的KIVYMD代码中,而不是在仅kv文件的类方法中[SOLVED},python,python-3.x,class,kivy,kivy-language,Python,Python 3.x,Class,Kivy,Kivy Language,我是新来的,kivymd有个小问题。这里有人能帮我吗 这是我的main.py文件 from kivymd.app import MDApp from kivymd.theming import ThemeManager from kivymd.uix.slider import Slider from kivy.uix.boxlayout import BoxLayout from kivymd.uix.label import MDLabel from kivymd.uix.toolbar i
from kivymd.app import MDApp
from kivymd.theming import ThemeManager
from kivymd.uix.slider import Slider
from kivy.uix.boxlayout import BoxLayout
from kivymd.uix.label import MDLabel
from kivymd.uix.toolbar import MDToolbar
from kivymd.uix.textfield import MDTextField
class rendertime(BoxLayout):
def init(self, kwargs):
super().init(kwargs)
self.padding = "30dp"
self.orientation = 'vertical'
self.spacing = "10dp"
self.top_name = MDToolbar(title = "my app")
self.how_many_text = MDLabel(text = "my label")
self.how_many = MDTextField(text = "1")
self.add_widget(self.top_name)
self.add_widget(self.how_many_text)
self.add_widget(self.how_many)
self.hour_value = MDLabel(text = "0")
self.add_widget(self.hour_value)
self.hours_slider = Slider(min = 0, max = 24)
self.add_widget(self.hours_slider)
self.hours_slider.bind(value = self.on_value_hours)
def on_value_hours(self, instance, slider):
self.hour_value.text = "%d"%slider
class myapp(MDApp):
title = "my app v"
def build(self):
self.theme_cls = ThemeManager()
self.theme_cls.primary_palette = 'Orange'
self.theme_cls.theme_style = 'Dark'
return rendertime()
if name== "main":
myapp().run()
现在我想切换屏幕。在最底部添加两个按钮,它们将切换到下一个屏幕。我不想使用.kv文件,我想在课堂上做所有事情
我不想用
kv = """
MDTextField:
id: frame
hint_text: "text"
"""
请,如果有人能解释给我听,我将非常感激。谢谢你,祝你有一个愉快的一天。祝大家好运
这是一个screenmanager文件transition.kv
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.lang import Builder
Builder.load_file("transition.kv")
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
pass
class Screen4(Screen):
pass
class MainApp(MDApp):
def build(self):
self.sm = ScreenManager(transition = NoTransition())
self.sm.add_widget(Screen1(name = "Screen1"))
self.sm.add_widget(Screen2(name = "Screen2"))
self.sm.add_widget(Screen3(name = "Screen3"))
return self.sm
def change_screen(self, screen):
self.sm.current = screen
if __name__ == "__main__":
MainApp().run()
和kv文件
<Screen1>:
BoxLayout:
orientation: "vertical"
MDToolbar:
title: "My App"
MDRoundFlatButton:
text: "Go to Screen 2"
on_release: app.root.current = "Screen2"
MDRoundFlatButton:
text: "Go to Screen 3"
on_release: app.root.current = "Screen3"
MDLabel:
text: "Screen 1"
<Screen2>:
BoxLayout:
orientation: "vertical"
MDToolbar:
title: "Screen 2"
left_action_items: [["arrow-left", lambda x: app.change_screen("Screen1")]]
MDLabel:
text: "Screen 2"
<Screen3>:
BoxLayout:
orientation: "vertical"
MDToolbar:
title: "Screen 3"
left_action_items: [["arrow-left", lambda x: app.change_screen("Screen1")]]
MDLabel:
text: "Screen 3
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.core.window import Window
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.uix.scrollview import ScrollView
from kivymd.uix.list import MDList, OneLineListItem
class Screen1(Screen):
def __init__(self, **kwargs):
super(Screen1, self).__init__(**kwargs)
layout = FloatLayout()
btn = Button(text = "screen 2", size_hint = (None,None), size = (100,100), pos_hint = {'x':0,'y':0}, on_release = self.screen_switch)
layout.add_widget(btn)
self.add_widget(layout)
def screen_switch(self, instance):
self.manager.current = 's2'
self.manager.transition.direction = 'left'
class Screen2(Screen):
def __init__(self, **kwargs):
super(Screen2, self).__init__(**kwargs)
layout = FloatLayout()
btn = Button(text = "screen 1", size_hint = (None,None), size = (100,100), pos_hint = {'x':0,'y':0}, on_release = self.screen_switch)
layout.add_widget(btn)
self.add_widget(layout)
myb = MDBoxLayout(padding = 50, orientation = 'vertical')
mys = ScrollView()
myl = MDList()
myb.add_widget(mys)
mys.add_widget(myl)
contacts = ["c1", "c2", "c3"]
for c in contacts:
myl.add_widget(
OneLineListItem(
text = c
)
)
self.add_widget(myb)
def screen_switch(self, instance):
self.manager.current = 's1'
self.manager.transition.direction = 'right'
class myapp(MDApp):
def build(self):
self.theme_cls.theme_style = 'Dark'
sm = ScreenManager()
sm.add_widget(Screen1(name = 's1'))
sm.add_widget(Screen2(name = 's2'))
return sm
if __name__ == "__main__":