我想问用户一个数字,然后显示相应数量的小部件。
这是我的方法:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
class MainApp(App):
def build(self):
return List()
class List(GridLayout):
def __init__(self, **kwargs):
super(List, self).__init__(**kwargs)
self.cols = 1
user_input = 3 # Just an example
for i in range(user_input):
label = Label(text="Widget number {}:".format(i + 1))
self.add_widget(label)
if __name__ == "__main__":
app = MainApp()
app.run()
问题是:“奇异语言”的重点是将逻辑保留在.py
文件中,将设计保留在.kv
文件中。
在执行此操作时(通过.kv
循环,有什么方法可以仅将设计保留在for
文件中吗?
(我是kivy的新手,很抱歉,如果我问一个简单的问题。
答案 0 :(得分:1)
可以。
KV文件主要用于设计外观,而程序的登录部分由PY文件处理。
.kv文件
<classname>:
Button:
text:'click me'
on_release: root.function_to_call_from_py_file()
.py文件
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()