Python 如何在kivy中将参数传递给build()?
我已经用GridLayout编写了一段代码,需要在Python文件中添加按钮。因此,add_widget()维护操作应该在build()中完成。我遇到错误,无法获取。请有人帮助我 简而言之,我需要在MineApp类的build()中添加它,而不是添加_btn()。 提前谢谢` main.pyPython 如何在kivy中将参数传递给build()?,python,kivy,Python,Kivy,我已经用GridLayout编写了一段代码,需要在Python文件中添加按钮。因此,add_widget()维护操作应该在build()中完成。我遇到错误,无法获取。请有人帮助我 简而言之,我需要在MineApp类的build()中添加它,而不是添加_btn()。 提前谢谢` main.py from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.widget import Widget
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
class MainLayout(BoxLayout):
def build(self):
pass
def add_btn(self,id):
for i in range(100):
id.add_widget(Button())
class MineApp(App):
def build(self):
return MainLayout()
if __name__ == '__main__':
MineApp().run()
mine.kv文件:
<MainLayout>:
orientation:'vertical'
BoxLayout:
orientation:'horizontal'
height: '30px'
size_hint_y:None
TextInput:
id: tinput
text:'10'
Button:
text:'start'
on_press:root.add_btn(grid)
Label:
id:mylabel
text:'0'
GridLayout:
id: grid
cols:10
rows:10
:
方向:'垂直'
盒子布局:
方向:'水平'
高度:“30px”
尺寸提示:无
文本输入:
id:tinput
正文:“10”
按钮:
文本:“开始”
按:root.add\u btn(网格)
标签:
id:mylabel
文本:“0”
网格布局:
id:网格
科尔斯:10
行:10
这花了一些时间,但我想我明白你的意思了!通过在.py文件中传递Grid的id参数可以获得相同的效果,如下所示
class MainLayout(BoxLayout):
def build(self):
for i in range(100):
self.ids.grid.add_widget(Button())
然后,你只需按下“开始”按钮,然后
Button:
text:'start'
on_press:root.build()
这是因为.py中的“self”指的是类,而在.kv中类似的措词是“root”(而.kv中的“self”指的是小部件!)这是您想要的吗?让我知道!我自己试过,没有问题:)
此外,这里没有明确指出,要测试代码,您需要通过以下方式导入生成器:
from kivy.lang import Builder
并且做
Builder.load_file("mine.kv")
由于您的.py和.kv不共享相同的名称(如果它们确实匹配名称,您仍然需要在.kv中添加一个“#File name:main.py”!除此之外,它看起来不错!这花了一些时间,但我想我明白了您的意思!您可以通过在.py文件中传递Grid参数来获得相同的效果,如下所示
class MainLayout(BoxLayout):
def build(self):
for i in range(100):
self.ids.grid.add_widget(Button())
然后,你只需按下“开始”按钮,然后
Button:
text:'start'
on_press:root.build()
这是因为.py中的“self”指的是类,而在.kv中类似的措词是“root”(而.kv中的“self”指的是小部件!)这就是您的想法吗?让我知道!我自己试过了,运行起来没有问题:)
此外,这里没有明确指出,要测试代码,您需要通过以下方式导入生成器:
from kivy.lang import Builder
并且做
Builder.load_file("mine.kv")
由于您的.py和.kv不共享相同的名称(如果它们确实匹配名称,您仍然需要将“#File name:main.py”添加到.kv!除此之外,它看起来很好!您的代码工作得很好,但发生的情况是,只有在我单击“开始”按钮时才添加按钮。否则,如果它存在于build()中创建活动时,按钮将自动创建,而不是等待按钮按下。有什么想法吗?谢谢您的代码工作得很好,但是发生的事情是,只有在单击“开始”按钮时,按钮才会添加。否则,如果build()中有按钮按钮将在活动创建时自动创建,而不是等待按钮按下。有什么想法吗?谢谢