我有一个自定义按钮。我不能通过kv文件把它放在屏幕上。我研究了很多课题。找不到有用的信息。下面是一个简单的例子:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string('''
#:kivy 1.11.0
<MyGrid>:
Button
text: 'hello'
''')
class MyGrid(BoxLayout):
pass
class DropApp(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
DropApp().run()
请注意,此kv文件中的按钮是本机Kivy按钮。我运行这个代码,我可以在屏幕上看到这个按钮。但现在我有了一个自定义按钮:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string('''
#:kivy 1.11.0
<MyGrid>:
customButton:
''')
class MyGrid(BoxLayout):
pass
class customButton(Button):
def __init__(self, **kwargs):
self.text = 'hi'
super(Button, self).__init__(**kwargs)
class DropApp(App):
def build(self):
return MyGrid()
if __name__ == '__main__':
DropApp().run()
我运行此代码,在屏幕上看不到此customButton。请注意,自定义小部件很复杂。我必须在py文件中定义它。例如:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
class DropApp(App):
def build(self):
layout = GridLayout(cols=1, spacing=10)
for i in range(100):
btn = Button(text=str(i), size_hint_y=None, height=40)
layout.add_widget(btn)
return layout
if __name__ == '__main__':
DropApp().run()
构建此布局需要循环。我找不到在kv文件中构建它的方法。所以我在Py文件中定义它。但如果我在py文件中定义它,我就不能在kv文件中使用它
问题1:第二个代码有什么问题
问题2:如果我不能让它工作,我能用kvlang实现第三个代码吗(在kv文件中而不是在python中)
我是新来的,希望有人能帮我
当我在Kivy
v1.11.1
上运行代码时,Pythonv3.7.5
:输出为:
如果这是您需要的输出,请尝试运行:
对于第二段代码,python区分大小写。因此,使用
CustomButton
代替customButton
如果要使用.kv文件执行第三个代码,以下是一个示例:
作为参考,请转到HERE
相关问题 更多 >
编程相关推荐