Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将屏幕管理器添加到我的KIVYMD代码中,而不是在仅kv文件的类方法中[SOLVED}_Python_Python 3.x_Class_Kivy_Kivy Language - Fatal编程技术网

Python 如何将屏幕管理器添加到我的KIVYMD代码中,而不是在仅kv文件的类方法中[SOLVED}

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

我是新来的,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 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__":