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

如何在Kivy Grid Layout中显示相机画面并实现跨列布局?

解决方案

要实现相机画面跨两列位于按钮上方的布局,只需在MyGridLayout的初始化方法中先添加Camera组件并设置colspan=2,再添加两个按钮即可。colspan属性可让组件跨越指定数量的列,刚好匹配你的需求。

修改后的完整代码如下:

import kivy
from kivy.app import App
from kivy.uix.camera import Camera
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button

class MyGridLayout(GridLayout):
    def __init__(self, **kwargs):
        super(MyGridLayout, self).__init__(**kwargs)
        self.cols = 2
        
        # 添加跨两列的相机组件
        camera = Camera(play=True, size_hint_y=0.8)
        self.add_widget(camera, colspan=2)
        
        # 添加两个按钮
        self.add_widget(Button(text="Localise"))
        self.add_widget(Button(text="Info"))

class MyApp(App):
    def build(self):
        return MyGridLayout()

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

关键说明:

  • Camera(play=True):启用相机并实时播放画面,若需手动控制启停,可将play设为False后通过代码控制。
  • size_hint_y=0.8:设置相机组件垂直方向占布局的80%空间,按钮占剩余20%,你可根据需求调整该比例。
  • self.add_widget(camera, colspan=2):通过colspan参数让相机组件跨越2列,填满GridLayout的整行。

后续导出到Android平台时,需注意在打包过程中添加相机权限,确保应用能正常访问设备摄像头。

内容的提问来源于stack exchange,提问作者Nigel Mathews

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:11:39