You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Kivy的build方法中同时返回两个组件?

解决Kivy中build方法无法同时返回多个布局的问题

问题原因

Kivy的build()方法仅能返回一个根组件,你连续编写两个return语句时,第一个return SL会直接终止方法执行,第二个return TL永远不会被触发,导致TL布局无法显示。

解决方案

创建一个父容器布局,将SL和TL两个StackLayout都添加到该容器中,最后返回这个父容器即可。常用的父容器有BoxLayout、GridLayout等,这里以BoxLayout为例演示:

修改后的代码

from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.boxlayout import BoxLayout  # 新增BoxLayout导入
from kivy.uix.button import Button

class Head(App):    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
    
    def build(self): 
        SL = StackLayout(orientation='rl-bt')
        TL = StackLayout(orientation='lr-tb')
         
        button1 = Button(text="1", font_size=18, size_hint=(.30, .1)) 
        button2 = Button(text="2", font_size=18, size_hint=(.39, .1)) 
        button3 = Button(text="3", font_size=18, size_hint=(.30, .1))
        button4 = Button(text="3", font_size=18, size_hint=(.30, .1))
         
        SL.add_widget(button1) 
        SL.add_widget(button2)
        SL.add_widget(button3)
        TL.add_widget(button4)

        # 创建父容器并添加两个StackLayout
        parent_layout = BoxLayout(orientation='vertical')  # vertical为垂直排列,horizontal为水平排列
        parent_layout.add_widget(SL)
        parent_layout.add_widget(TL)

        return parent_layout  # 返回父容器作为根组件

root = Head()
root.run()

说明

  • BoxLayout的orientation参数可根据需求设置为'vertical'(垂直堆叠)或'horizontal'(水平并排)。
  • 除BoxLayout外,你也可以使用GridLayout、FloatLayout等其他布局作为父容器,只要能容纳多个子组件即可。

内容的提问来源于stack exchange,提问作者Imitha Bidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:15:33