【问题标题】:How to delete a widget in python kivy如何在 python kivy 中删除小部件
【发布时间】:2021-07-25 19:44:26
【问题描述】:

我想通过单击“角质模式”按钮来删除“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()

你能帮我弄一下,当你点击任何按钮时,删除按钮的小部件?

【问题讨论】:

    标签: python kivy widget


    【解决方案1】:

    首先,保存对要删除的小部件的引用:

    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。除了其他问题之外,您对该新实例所做的任何操作都不会影响当前正在运行的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      相关资源
      最近更新 更多