簡體   English   中英

(Kivy) 如何在 Kivy 中的 canvas 上顯示新內容?

[英](Kivy) How do I display new content on my canvas in Kivy?

這應該是一個很容易解決的問題。 我是 Kivy 的新手。 我試圖在按下按鈕時清除 canvas,然后顯示一個新的小部件以基本上移動到另一個頁面。 當我運行它並按下按鈕時,canvas 被清除,但我從 IntroPage 什么也沒得到。

Python 腳本:

import kivy
kivy.require('2.0.0')

from kivy.app import App

from kivy.uix.label import Label

from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty


class ABT(App):
    def build(self):
        return WelcomePage()


class WelcomePage(Widget):
    def btn(self):
        self.canvas.clear()
        print('pressed')
        return IntroPage()


class IntroPage(Widget):
    def __init__(self):
    pass


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

KV 文件:

<WelcomePage>
    canvas.before:
        Color:
            rgba: (.43,.51,.92,.26)
        Rectangle:
            pos: self.pos
            size: self.size
    GridLayout:
        cols:1
        size: root.width, root.height
        Image:
            source: 'abt1t.png'
            size_hint: (1,.8)

        Button:
            text:"begin"
            background_color: (.43,.51,.92,.26)
            size_hint: (1,.2)
            on_press: root.btn()

<IntroPage>
    GridLayout:
        cols:1
        Label:
            text:"This won't show up!"

btn返回 IntroPage 將不起作用,因為btn不是構建方法。

實現多個頁面的最佳方式可能是使用ScreenManager

from kivy.uix.screenmanager import ScreenManager, Screen


class ABT(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(WelcomePage(name="welcome"))
        sm.add_widget(IntroPage(name="intro"))
        return sm


class WelcomePage(Screen):
    def btn(self):
        print('pressed')
        self.manager.current = "intro"


class IntroPage(Screen):
    def __init__(self):
        pass

暫無
暫無

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

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