我正在使用Kivy Python库。
我定义了两个小部件。
程序运行时,我运行第一个小部件。
当该小部件的按钮被按下时,我希望它消失并被第二个小部件替换。
这是两个小部件的.kv文件。
我的主要Python文件运行应用程序,并返回第一个小部件。
这里的想法是拥有一个用户界面管理器。该管理器不像树一样运行UI,而是像列表和堆栈一样运行。列表包含所有UI表单的实例。堆栈保存了这些表单的遍历,每当我们跳转到一个表单时,便将其推入堆栈并“渲染”或其他操作。
编辑: 我选择了我的答案,但在搜索中我还发现了Screen对象:http://kivy.org/docs/api-kivy.uix.screenmanager.html。个人认为,清除(clear())和添加(add())命令更加强大,但如果您感兴趣,屏幕(screen)可以帮助您解决很多问题,还有过渡效果。
我定义了两个小部件。
程序运行时,我运行第一个小部件。
当该小部件的按钮被按下时,我希望它消失并被第二个小部件替换。
这是两个小部件的.kv文件。
#uitest.kv
<TestForm>:
canvas:
Rectangle:
pos: self.center_x, 0
size: 10, self.height
BoxLayout:
size: root.size
padding: 40
Button:
text: 'Hello'
on_release: root.testCallback()
<TestForm2>:
canvas:
Rectangle:
pos: self.center_x, 0
size: self.height, 10
我的主要Python文件运行应用程序,并返回第一个小部件。
#main.py
from testform import TestForm
from kivy.app import App
class UITestApp(App):
def build(self):
return TestForm()
# Main launching point
if __name__ in ('__main__', '__android__'):
UITestApp().run()
我的第一个小部件有一个回调函数。这就是代码所属的地方。
from testform2 import TestForm2
from kivy.uix.widget import Widget
class TestForm(Widget):
def testCallback(self):
TestForm2() # Code in question goes here. @TODO replace this widget with TestForm2 widget.
这里的想法是拥有一个用户界面管理器。该管理器不像树一样运行UI,而是像列表和堆栈一样运行。列表包含所有UI表单的实例。堆栈保存了这些表单的遍历,每当我们跳转到一个表单时,便将其推入堆栈并“渲染”或其他操作。
编辑: 我选择了我的答案,但在搜索中我还发现了Screen对象:http://kivy.org/docs/api-kivy.uix.screenmanager.html。个人认为,清除(clear())和添加(add())命令更加强大,但如果您感兴趣,屏幕(screen)可以帮助您解决很多问题,还有过渡效果。