簡體   English   中英

python screenmanager (kivy)

[英]python screenmanager (kivy)

`from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen

class Login(Screen):
    def main(self):
        layout = GridLayout()
        def btn():
            sm.switch_to(Screen(name='account'))
        self.bt = Button(text='tela 1',
                         size_hint=(None,None),
                         size=(592,86),
                         pos=(50,50), on_press=btn,
                         background_color=(1,0,0,0))
        layout.add_widget(self.bt)
        return layout
    
class Account(Screen):
    def main2(self):
        lt = GridLayout()
        def btnn():
            sm.switch_to(Screen(name='login'))
        self.btt = Button(text='telaa 2',
                         size_hint=(None,None),
                         size=(592,86),
                         pos=(50, 50), on_press=btnn,
                         background_color=(1,0,0,0))
        lt.add_widget(self.btt)
        return lt

sm = ScreenManager()
sm.add_widget(Login(name='login'))
sm.add_widget(Account(name='account'))

class TestApp(App):

    def build(self):
        return sm

if _name_ == '_main_':
    TestApp().run()

`我今天入手了kivy,不過只是個路過的小說,沒打算學kivy語言。

我在網上看到的所有關於屏幕管理器的教程都使用kivy語言。 如何僅使用 python 滾動瀏覽 2 個屏幕? 我試圖將 kivy 語言翻譯成 python,但我得到的只是黑屏。

這是使用 Python 代碼(不是 kv 語言)創建帶有ButtonScreen的最小示例,該按鈕在屏幕管理器中更改屏幕。

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout

# Declare both screens

class MenuScreen(Screen):
    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.layout = BoxLayout()
        self.add_widget(self.layout)

        self.label = Label(text='Menu Screen')        
        self.layout.add_widget(self.label)

        self.button = Button(text='Go To Settings')
        self.button.bind(on_press=self.change_screen)
        self.layout.add_widget(self.button)
        
    def change_screen(self, event):
        #sm.current = 'settings'
        self.manager.transition.direction = 'up'
        self.manager.transition.duration = 3 # 3 seconds
        self.manager.current = 'settings'
        
class SettingsScreen(Screen):
    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.layout = FloatLayout()
        self.add_widget(self.layout)

        self.label = Label(text='Settings Screen')        
        self.layout.add_widget(self.label)

        self.button = Button(text='Go To Menu', size_hint=(.5, .10), pos=(20, 20))
        self.button.bind(on_press=self.change_screen)
        self.layout.add_widget(self.button)

    def change_screen(self, event):
        #sm.current = 'menu'
        self.manager.transition.direction = 'right'
        self.manager.transition.duration = 0.5 # 0.5 second
        self.manager.current = 'menu'

# Create the screen manager

sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))


class TestApp(App):

    def build(self):
        return sm


if __name__ == '__main__':
    TestApp().run()

基於文檔屏幕管理器中的示例(使用 kv 語言)

你必須學習kv語言。

Kivy 語言是一種專用於描述用戶界面和交互的語言。 您可以將此語言與 Qt 的 QML ( http://qt.nokia.com ) 進行比較,但我們包含了諸如規則定義之類的新概念,因此您可能知道一些新概念。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM