繁体   English   中英

Kivy-将小部件(拆分器)添加到GridLayout

[英]Kivy - Add widget(Splitter) to a GridLayout

我试图将给定的图片放在可以滚动的网格布局中,当我选择图片时,图片的颜色会发生变化,这是我的代码:

CONTAINER_PNG = os.path.join(AllImage_ROOT, 'images')
IMAGES_NAMES = [c[:-4] for c in os.listdir(CONTAINER_PNG)]

LIST_IM = os.listdir(CONTAINER_PNG)

class ImageButton(ButtonBehavior, Image):
   pass

类AllImage(BoxLayout):

# screen_manager = ObjectProperty()

def __init__(self, **kwargs):
    BoxLayout.__init__(self, **kwargs)
    self.orientation='vertical'

    splitter = Splitter(sizable_from = 'bottom')
    root = ScrollView()

    layout = GridLayout(cols=4, spacing=10)
    layout2 = GridLayout(cols=4, spacing=10)
    button = ImageButton(source = 'mix.png')
    layout2.add_widget(button)

    self.add_widget(layout2)

    for im in IMAGES_NAMES:
        if IMAGES_NAMES != None :
            btn = ImageButton(source = im+'.png')
            btn.bind(on_press=  lambda a:layout.add_widget( ToggleButton(text = 'work') ))
            btn.bind(on_press=  lambda b:self.background_color(1,1,1))
            layout.add_widget(btn)

    layout2.add_widget(splitter)
    root.add_widget(layout)

    self.add_widget(root)

TryApp(App)类:

def build(self):
    return AllImage()

def on_pause(self):
    return True


if __name__ == "__main__":
    TryApp().run()

我知道我做错了,所以我有几个问题:

1-为什么当我在我的2个网格之间添加拆分器时它不起作用(拆分器不可见)

2-如何更改ImageButton的颜色?

3-滚动视图在我的GridLayout上不起作用,如何自定义可以大于窗口的Grid。

感谢您的时间 :)

  1. kivy试图通过将UI与逻辑分离来简化事情。.与kivy文档说,您必须停用孩子的至少size_hint指令之一(x或y)才能启用滚动。

     <AllImage>: orientation:'vertical' ScrollView: do_scroll_x:False GridLayout: cols:4 spacing:10 size_hint_y:None height: 8*dp(80) 

为了清楚起见,请尝试在kv文件中实现UI内容,以使内容更易于阅读。

btn.bind(on_release=  lambda a:layout.add_widget( ToggleButton(text = 'work') ))
btn.bind(on_press=  lambda b:self.background_color(1,1,1))

我不认为on_press可以同时处理两种方法,所以尝试一下

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM