python - 我无法清除 kivy 的根
问题描述
我想根据某些按钮或情况清洁屏幕并带来新的小部件。第一页第二页等..
但是要么我将小部件带到旧的小部件上,要么我遇到了我不理解的问题。
这是我的代码
主文件
from kivy.app import App
class PageOne(App):
def p_1(self):
self.root.clear_widgets()
PageTwo().run()
def build(self, *args):
pass
class PageTwo(App):
def p_2(self):
self.root.clear_widgets()
PageOne().run()
def build(self):
pass
PageOne().run()
pageone.kv:
FloatLayout:
Label:
size_hint: 1, 0.7
pos_hint: {"top":1}
text: "Page 1"
Button:
size_hint: 1, 0.3
pos_hint: {"top": 0.3}
text: "Open Page 2"
on_press: app.p_1()
pagetwo.kv:
FloatLayout:
Label:
size_hint: 1, 0.5
pos_hint: {"top":1}
text: "Page 2"
Button:
size_hint: 1, 0.3
pos_hint: {"top": 0.3}
text: "Open Page 1"
on_press: app.p_2()
一些警告
[INFO ] [MTD ] Read event from </dev/input/event6>
[INFO ] [Base ] Start application main loop
[WARNING] [MTD ] Unable to open device "/dev/input/event6". Please ensure you have the appropriate permissions.
[WARNING] [MTD ] Unable to open device "/dev/input/event6". Please ensure you have the appropriate permissions.
[INFO ] [Base ] Leaving application in progress...
.
.
AttributeError: 'PageOne' object has no attribute 'p_2'
我究竟做错了什么!?提前致谢
解决方案
只能有一个 App,如果你想拥有多个视图,你应该使用多个 Screen 和一个 ScreenManager,例如:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
class PageOne(Screen):
def p_1(self):
self.manager.current = 'PageTwo'
class PageTwo(Screen):
def p_2(self):
self.manager.current = 'PageOne'
Builder.load_string('''
<PageOne>:
FloatLayout:
Label:
size_hint: 1, 0.7
pos_hint: {"top":1}
text: "Page 1"
Button:
size_hint: 1, 0.3
pos_hint: {"top": 0.3}
text: "Open Page 2"
on_press: root.p_1()
<PageTwo>:
FloatLayout:
Label:
size_hint: 1, 0.5
pos_hint: {"top":1}
text: "Page 2"
Button:
size_hint: 1, 0.3
pos_hint: {"top": 0.3}
text: "Open Page 1"
on_press: root.p_2()
''')
manager = ScreenManager()
manager.add_widget(PageOne(name="PageOne"))
manager.add_widget(PageTwo(name="PageTwo"))
class MainApp(App):
def build(self):
return manager
if __name__ == '__main__':
MainApp().run()
推荐阅读
- java - 当我单击选项菜单时,折叠工具栏上的滚动错误
- python - 如何找到当前 spark 上下文中加载的所有 textFile(s)?
- oracle - 使用正则表达式和搜索条件比较两个表中的列
- java - 如何在 cmd/java 中转到目录
- reactjs - 同一组件具有不同查询字符串的两条路由
- firebase-realtime-database - 为了重置 Firebase 实时数据库中的分数,我应该在 Cloud Scheduler Payload 中添加什么?
- serilog - appsettings.json 中的 serilog 配置中“使用”的目的是什么?
- javascript - 为什么这个 vuejs v-for 循环会抛出未定义的错误?
- javascript - npx babel-node foo 每次运行需要 10 秒
- java - JUnit 测试的默认工作目录 - 我们如何在 Eclipse 中一致地定义它?