如何在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
相关产品推荐
相关产品推荐

