Kivy - 将小部件(拆分器)添加到 GridLayout
Kivy - Add widget(Splitter) to a GridLayout
我试图将给定的图片放在可以滚动的网格布局中,当我 select 图片颜色改变时,这是我的代码:
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
class 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)
class TryApp(App):
def build(self):
return AllImage()
def on_pause(self):
return True
if __name__ == "__main__":
TryApp().run()
我知道我做错了,所以我有几个问题:
1- 为什么当我在我的 2 个网格之间添加一个拆分器时它不起作用(拆分器不可见)
2- 如何更改 ImageButton 的颜色?
3- 滚动视图在我的 GridLayout 上不起作用,我如何自定义可以比我的 window.
更大的网格
感谢您的宝贵时间:)
kivy 试图通过将 UI 从逻辑中分离出来使事情变得简单。从 kivy 文档中,它说你必须至少停用一个 size_hint 指令child 的 (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 不能同时处理两种方法,所以试试这个
我试图将给定的图片放在可以滚动的网格布局中,当我 select 图片颜色改变时,这是我的代码:
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
class 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)
class TryApp(App):
def build(self):
return AllImage()
def on_pause(self):
return True
if __name__ == "__main__":
TryApp().run()
我知道我做错了,所以我有几个问题:
1- 为什么当我在我的 2 个网格之间添加一个拆分器时它不起作用(拆分器不可见)
2- 如何更改 ImageButton 的颜色?
3- 滚动视图在我的 GridLayout 上不起作用,我如何自定义可以比我的 window.
更大的网格感谢您的宝贵时间:)
kivy 试图通过将 UI 从逻辑中分离出来使事情变得简单。从 kivy 文档中,它说你必须至少停用一个 size_hint 指令child 的 (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 不能同时处理两种方法,所以试试这个