Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为Kivy中的循环添加堆栈布局?_Android_Python_Ios_Kivy_Kivy Language - Fatal编程技术网

Android 如何为Kivy中的循环添加堆栈布局?

Android 如何为Kivy中的循环添加堆栈布局?,android,python,ios,kivy,kivy-language,Android,Python,Ios,Kivy,Kivy Language,我是一个完全业余的程序员。所以我刚开始学习Kivy并刷新我的Python内存,因为我需要制作一个移动应用程序。我有点理解OOP的基本思想,但其他的不多。我没有上过任何课程或任何东西,我只是随机应变 因此,我有一个基本菜单设置与另一个屏幕,得到了所有的按钮。我想在另一个屏幕中添加一个堆栈布局,其中包含一组图片(名为1.jpg,2.jpg),图片下方有字幕。我理解,如何在Python中实现这一点,我只是不知道如何在Kivy中实现。我可以在.kv文件中逐个添加它们,但这需要很长时间。我尝试了很多不同的

我是一个完全业余的程序员。所以我刚开始学习Kivy并刷新我的Python内存,因为我需要制作一个移动应用程序。我有点理解OOP的基本思想,但其他的不多。我没有上过任何课程或任何东西,我只是随机应变

因此,我有一个基本菜单设置与另一个屏幕,得到了所有的按钮。我想在另一个屏幕中添加一个堆栈布局,其中包含一组图片(名为1.jpg,2.jpg),图片下方有字幕。我理解,如何在Python中实现这一点,我只是不知道如何在Kivy中实现。我可以在.kv文件中逐个添加它们,但这需要很长时间。我尝试了很多不同的组合,但我开始明白,我在课程和对象方面的教育远远不够,无法做到这一点。我永远无法正确使用add_小部件,因为我无法1)正确定位代码,使其能够运行;2)将其指向正确的属性,使其即使运行,结果也不会出现

我通常用于测试的for循环:

g = Stack()

for i in range(9)
    btn = Button(text=("Test" + str(i), size_hint=(0.2, 0.1))
    g.add_widget(btn)
我在网上查了一下,结果发现我在某个地方漏掉了一个“自我”或“根”。我不知道如何将.kv文件与add_小部件结合起来。对于基本菜单,我遵循了一个简单的教程

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import *
from kivy.uix.screenmanager import *
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.stacklayout import StackLayout
from kivy.uix.image import Image
from kivy.properties import *
from kivy.config import Config
from kivy.uix.button import Button
Config.set('graphics', 'width', '411')
Config.set('graphics', 'height', '731')

class Background(Image):
    pass

class Relative(RelativeLayout):
    pass

class Stack(StackLayout):
    pass

class MainMenu(Screen):
    pass

class Other(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

start = Builder.load_file("KVFile.kv")

class MainApp(App):
    def build(self):
        return start

MainApp().run()
.kv文件:

#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainMenu:
    Other:

<MainMenu>:

    # ///// BACKGROUND IMAGE /////

    name: 'main'
    Background:
        source: 'BG.jpg'
        background_color: .34, .2, .48, .7
        size_hint: None, None
        pos_hint: {'center_x': 0.5, 'center_y': 0.5}
        size: 800, 800

    # ///// MAIN MENU BUTTON LAYOUT /////

    Relative:

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "LOREM"
            on_release: app.root.current = "other"
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.3, 'center_y': 0.4}

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "IPSUM"
            on_release: app.root.current = "other"          
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.7, 'center_y': 0.4}

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "DOLOR"
            on_release: app.root.current = "other"          
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.3, 'center_y': 0.3}

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "SIT"
            on_release: app.root.current = "other"          
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.7, 'center_y': 0.3}

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "AMET"
            on_release: app.root.current = "other"          
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.3, 'center_y': 0.2}

        Button:
            font_name: 'Effra_Std_Bd'
            font_size: 35
            text: "OTHER"
            on_release: app.root.current = "other"          
            background_color: .34, .2, .48, .7
            size_hint: 0.39, 0.09
            pos_hint: {'center_x': 0.7, 'center_y': 0.2}

<Other>:
    name: 'other'
    Stack:
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理:
转换:FadeTransition()
主菜单:
其他:
:
#//背景图像/////
名称:'main'
背景:
资料来源:“BG.jpg”
背景颜色:.34、.2、.48、.7
大小提示:无,无
位置提示:{'center_x':0.5,'center_y':0.5}
尺码:800800
#//主菜单按钮布局/////
亲属:
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
案文:“洛雷姆”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.3,'center_y':0.4}
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
案文:“公共部门”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.7,'center_y':0.4}
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
案文:“多洛”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.3,'center_y':0.3}
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
正文:“坐下”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.7,'center_y':0.3}
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
案文:“阿梅特”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.3,'center_y':0.2}
按钮:
字体名称:“Effra\U Std\U Bd”
字体大小:35
案文:“其他”
发布时:app.root.current=“其他”
背景颜色:.34、.2、.48、.7
尺寸提示:0.39,0.09
位置提示:{'center_x':0.7,'center_y':0.2}
:
姓名:'其他'
堆栈:

我知道这不是一个非常具体的问题,我应该研究文档,但是文档中的信息量太大了。

我不知道定义uuu init_uuu函数做了什么,但它做到了

class Other(Screen):
    pass

class Stack(StackLayout):
    def __init__(self, **kwargs):
        super(Stack, self).__init__(**kwargs)
        for i in range(9):
            btn = Button(size_hint=(0.2, 0.1), text=("Test" + str(i)))
            self.add_widget(btn)

:
姓名:'其他'
堆栈:
<Other>:
    name: 'other'
    Stack: