You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:为Kivy页数计数应用添加清屏按钮

给Kivy页数计数应用添加清屏按钮的解决方案

直接修改你的代码,添加清屏按钮和对应的逻辑即可。核心思路是在每个页面上新增一个"Clear"按钮,点击后清空屏幕管理器中除初始页面外的所有页面,并切回初始页面。

修改后的完整代码如下:

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

class TestScreen(Screen):
    def __init__(self, **kwargs):
        Screen.__init__(self, **kwargs)
        layout = BoxLayout(orientation="vertical", spacing=20, padding=20)
        self.add_widget(layout)
        
        layout.add_widget(Label(text=self.name, font_size="150sp"))
        
        # 计数按钮
        count_btn = Button(text="Count", font_size='30sp')
        layout.add_widget(count_btn)
        count_btn.bind(on_press=self.add_screen)
        
        # 新增清屏按钮
        clear_btn = Button(text="Clear", font_size='30sp', background_color=(1,0,0,1))
        layout.add_widget(clear_btn)
        clear_btn.bind(on_press=self.clear_screens)

    def add_screen(self, *args):
        n = len(self.manager.screen_names)
        screen = TestScreen(name="{}".format(n))
        self.manager.add_widget(screen)
        self.manager.current = screen.name 

    def clear_screens(self, *args):
        # 保留初始屏幕,移除其他所有屏幕
        initial_screen = self.manager.screens[0]
        for screen in self.manager.screens[1:]:
            self.manager.remove_widget(screen)
        # 切回初始屏幕
        self.manager.current = initial_screen.name

# Create the screen manager
sm = ScreenManager()
sm.add_widget(TestScreen(name=''))

class TestApp(App):
    def build(self):
        return sm

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

关键修改说明

  • 在TestScreen的初始化方法里,新增了一个红色的"Clear"按钮,和计数按钮放在同一布局中
  • 新增clear_screens方法:遍历屏幕管理器中的所有屏幕,只保留第一个初始屏幕,移除其余屏幕,最后切换回初始屏幕

内容的提问来源于stack exchange,提问作者Veli Zeynalabdinov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:55:23