作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小部件(W2),由其他小部件(W1)组成。每个都有一个对应的 .kv 文件,如下所示。运行 main.py,我希望看到带有两个标签的黑色背景,垂直堆叠。相反,我将两个标签叠在一起,所以出了点问题。
kivy.factory.FactoryException: Unknown class <W1>
Builder.load_file()
在 .py 文件中,只是导入 .py 文件,但结果相似。
import kivy
from kivy.properties import StringProperty
from kivy.uix.widget import Widget
kivy.require('1.10.0')
class W1(Widget):
text = StringProperty('default')
def __init__(self, **kwargs):
super(W1, self).__init__(**kwargs)
#:kivy 1.10.0
<W1>:
text:
Label:
text: root.text
import kivy from kivy.uix.boxlayout import BoxLayout
# from w1 import W1 # added this to get a working, but the incorrect layout
kivy.require('1.10.0')
class W2(BoxLayout):
def __init__(self, **kwargs):
super(W2, self).__init__(**kwargs)
#:kivy 1.10.0
#:include w1.kv
<W2>:
orientation: 'vertical'
W1:
text: 'w1.1'
W1:
text: 'w1.2'
import kivy
from w2 import W2
from kivy.app import App
kivy.require('1.10.0')
class mainApp(App):
def build(self):
pass
if __name__ == '__main__':
mainApp().run()
#:kivy 1.10.0
#:include w2.kv
W2:
最佳答案
为什么要为此使用两个不同的 kv 文件?
我会说正确的方法类似于我的 kv 文件。因为您正在拆分可以在单个页面上完成的事情,如果您需要不同的页面,请使用 ScreenManager
进口东西
main.py :
`
import kivy
from kivy.app import App
from kivy.uix.widgets import Widget
from kivy.uix.label import Label
from kivy.uix.gridlayut import GridLayout
class MyGrid(Widget):
pass
class MyApp(App):
def build(self):
# this calls what we want to show in the kv file
return MyGrid()
if __name__ == "__main__":
MyApp().run()
`
文件是这样写的,因为应用程序脱落,为了链接 2,它必须具有相同的名称
MyGrid
从 .py 文件,然后显示
Label:
text: "whatever"
Label:
text: "whatever 2"
关于python-3.x - 如何在 kivy 中正确导入自定义小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736868/
我是一名优秀的程序员,十分优秀!