Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
Python 基于用户输入在.kv文件中创建小部件_Python_Python 3.x_Kivy_Kivy Language - Fatal编程技术网

Python 基于用户输入在.kv文件中创建小部件

Python 基于用户输入在.kv文件中创建小部件,python,python-3.x,kivy,kivy-language,Python,Python 3.x,Kivy,Kivy Language,我想让用户输入一个数字,然后显示该数量的小部件 我就是这样做的: 从kivy.app导入应用 从kivy.uix.label导入标签 从kivy.uix.gridlayout导入gridlayout 类主应用程序(应用程序): def生成(自): 返回列表() 类列表(网格布局): 定义初始(自我,**kwargs): 超级(列表,自我)。\uuuuu初始化(**kwargs) self.cols=1 用户输入=3#只是一个例子 对于范围内的i(用户输入): label=label(text=“

我想让用户输入一个数字,然后显示该数量的小部件

我就是这样做的:

从kivy.app导入应用
从kivy.uix.label导入标签
从kivy.uix.gridlayout导入gridlayout
类主应用程序(应用程序):
def生成(自):
返回列表()
类列表(网格布局):
定义初始(自我,**kwargs):
超级(列表,自我)。\uuuuu初始化(**kwargs)
self.cols=1
用户输入=3#只是一个例子
对于范围内的i(用户输入):
label=label(text=“小部件编号{}:”.format(i+1))
self.add_小部件(标签)
如果名称=“\uuuuu main\uuuuuuuu”:
app=MainApp()
app.run()
问题是:kivy语言的要点是将逻辑保存在
.py
文件中,将设计保存在
.kv
文件中

在执行此操作时(有一个
for
循环),是否有任何方法可以将设计仅保留在
.kv
文件中

(我是kivy的新手,如果我问了一个简单的问题,很抱歉。:)

当然可以

KV文件主要用于设计外观,而程序的登录部分由PY文件处理

.kv文件

<classname>:
    Button:
        text:'click me'
        on_release: root.function_to_call_from_py_file()
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout


class List(GridLayout):

    def function_to_call_from_py_file(self):
        print('This function is called')


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



if __name__ == "__main__":

    app = MainApp()
    app.run()

您可以在函数中添加for循环它是一个显示小部件的
for
循环。如果函数中有
for
循环,则我的小部件(设计)也必须在函数中。在kv文件中为布局指定id。。。。并使用for循环中的add_widget选项在
.kv
文件中动态添加widgetso,我只制作一次该widget?我会试试。是的,您只在kv中进行布局,并在py文件中添加来自for循环的小部件