求助:为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
相关产品推荐
相关产品推荐

