如何在 python kivy 中删除一个小部件
How to delete a widget in python kivy
我想通过单击 'horny mode' 按钮删除 'bl' 小部件,但它最初不在屏幕上。如何通过单击按钮删除小部件?
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.config import Config
from kivy.core.window import Window
from kivy.uix.image import Image
from kivy.uix.widget import Widget
class ScraperApp(App, FloatLayout):
def PhotGif(self):
wentil = Image(source='img.gif', size_hint = (.5, .5), anim_loop = 99999)
photo = AnchorLayout(anchor_x='center', anchor_y='top', padding = [0, 75, 0, 0])
photo.add_widget(wentil)
return photo
def build(self):
bl = BoxLayout(orientation='horizontal', padding = [50, 100, 50, 150], spacing = 5)
bl.add_widget( Button(text = '1', on_press = self.first, font_size = 20, size_hint = (.3, .1)))
bl.add_widget( Button(text = '2', on_press = self.second, font_size = 20, size_hint = (.3, .1)))
#bl.add_widget( Button(text = 'Wallpaper mode', on_press = self.wallpaper, font_size = 20, size_hint = (.3, .1)))
wid = FloatLayout()
wid.add_widget(ScraperApp().PhotGif())
wid.add_widget(bl)
return wid
def first(self, instance):
print('Horny mode')
instance.text = 'кнопка нажата'
ScraperApp().build().remove_widget(bl)
stop()
def stop():
ScraperApp().build().remove_widget(bl)
def second(self, instance):
print('Soft mode')
instance.text = 'кнопка нажата'
if __name__ == '__main__':
ScraperApp().run()
你能帮我做一个当你点击任何按钮时,删除按钮的小部件吗?
首先,保存对要删除的小部件的引用:
def build(self):
self.bl = BoxLayout(orientation='horizontal', padding=[50, 100, 50, 150], spacing=5)
self.bl.add_widget(Button(text='1', on_press=self.first, font_size=20, size_hint=(.3, .1)))
self.bl.add_widget(Button(text='2', on_press=self.second, font_size=20, size_hint=(.3, .1)))
# self.bl.add_widget( Button(text = 'Wallpaper mode', on_press = self.wallpaper, font_size = 20, size_hint = (.3, .1)))
wid = FloatLayout()
wid.add_widget(ScraperApp().PhotGif())
wid.add_widget(self.bl)
return wid
然后修改first()
方法去掉:
def first(self, instance):
print('Horny mode')
instance.text = 'кнопка нажата'
self.root.remove_widget(self.bl)
self.stop()
注意代码:
ScraperApp().build().remove_widget(bl)
创建 ScaperApp
的新实例并尝试从该实例中删除 bl
。除了其他问题,您对该新实例所做的任何事情都不会影响当前 运行.
的实例
我想通过单击 'horny mode' 按钮删除 'bl' 小部件,但它最初不在屏幕上。如何通过单击按钮删除小部件?
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.config import Config
from kivy.core.window import Window
from kivy.uix.image import Image
from kivy.uix.widget import Widget
class ScraperApp(App, FloatLayout):
def PhotGif(self):
wentil = Image(source='img.gif', size_hint = (.5, .5), anim_loop = 99999)
photo = AnchorLayout(anchor_x='center', anchor_y='top', padding = [0, 75, 0, 0])
photo.add_widget(wentil)
return photo
def build(self):
bl = BoxLayout(orientation='horizontal', padding = [50, 100, 50, 150], spacing = 5)
bl.add_widget( Button(text = '1', on_press = self.first, font_size = 20, size_hint = (.3, .1)))
bl.add_widget( Button(text = '2', on_press = self.second, font_size = 20, size_hint = (.3, .1)))
#bl.add_widget( Button(text = 'Wallpaper mode', on_press = self.wallpaper, font_size = 20, size_hint = (.3, .1)))
wid = FloatLayout()
wid.add_widget(ScraperApp().PhotGif())
wid.add_widget(bl)
return wid
def first(self, instance):
print('Horny mode')
instance.text = 'кнопка нажата'
ScraperApp().build().remove_widget(bl)
stop()
def stop():
ScraperApp().build().remove_widget(bl)
def second(self, instance):
print('Soft mode')
instance.text = 'кнопка нажата'
if __name__ == '__main__':
ScraperApp().run()
你能帮我做一个当你点击任何按钮时,删除按钮的小部件吗?
首先,保存对要删除的小部件的引用:
def build(self):
self.bl = BoxLayout(orientation='horizontal', padding=[50, 100, 50, 150], spacing=5)
self.bl.add_widget(Button(text='1', on_press=self.first, font_size=20, size_hint=(.3, .1)))
self.bl.add_widget(Button(text='2', on_press=self.second, font_size=20, size_hint=(.3, .1)))
# self.bl.add_widget( Button(text = 'Wallpaper mode', on_press = self.wallpaper, font_size = 20, size_hint = (.3, .1)))
wid = FloatLayout()
wid.add_widget(ScraperApp().PhotGif())
wid.add_widget(self.bl)
return wid
然后修改first()
方法去掉:
def first(self, instance):
print('Horny mode')
instance.text = 'кнопка нажата'
self.root.remove_widget(self.bl)
self.stop()
注意代码:
ScraperApp().build().remove_widget(bl)
创建 ScaperApp
的新实例并尝试从该实例中删除 bl
。除了其他问题,您对该新实例所做的任何事情都不会影响当前 运行.