我有以下代码:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class GUI(FloatLayout):
def remove(self):
self.remove_widget(self.ids.test)
class GUIApp(App):
def build(self):
return GUI()
if __name__ == '__main__':
GUIApp().run()
以及相应的kv
file:
#:kivy 1.9.1
<GUI>:
BoxLayout:
Button:
id: test
text: 'Test'
on_press: root.remove()
单击该按钮后应将其删除。然而,这并没有发生。如果我删除BoxLayout
在 kv 文件中,程序按预期工作,并且按钮被删除。为什么会发生这种情况,如何删除 kv 文件中声明的小部件? (我知道我可以替换按钮的on_press
with self.parent.remove_widget(self)
,但我有代码root.remove()
除了删除小部件之外。)
你正在呼唤remove_widget
of GUI
当你的按钮的父级实际上是对象时BoxLayout
在里面。remove_widget
只删除直接子级,而不删除任何后代。
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
Builder.load_string('''
<GUI>:
BoxLayout:
id: layout
Button:
id: test
text: 'Test'
on_press: root.remove()
''')
class GUI(FloatLayout):
def remove(self):
self.ids.layout.remove_widget(self.ids.test)
class GUIApp(App):
def build(self):
return GUI()
if __name__ == '__main__':
GUIApp().run()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)