gpt4 book ai didi

python - 访问 kivy 中不同模块中声明的信息时出现的问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:06 27 4
gpt4 key购买 nike

我有一个 python 文件(root.py)和另一个 python 文件(button.py)。当我使用kv语言在button.py中定义带有属性(例如size_hint:0.1,1)的按钮时,root.py似乎无法访问该信息。

当我在button.py中使用python定义相同的信息时,root.py似乎能够访问它。

ROOT.PY

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang.builder import Builder
from buttons import *

Builder.load_string("""
<Root>:
ButtonBar:
""")

class BtnBar(ButtonBar):
print(self.size_hint) # prints [1,1] instead of [0.1,1]

class Root(FloatLayout):
pass

class AppDev(App):
def build(self):
return Root()

按钮.PY

from kivy.uix.floatlayout import FloatLayout
from kivy.lang.builder import Builder

Builder.load_string("""
<ButtonBar>:
size_hint: 0.1,1
""")

class ButtonBar(FloatLayout):
pass

Root.py应该能够访问我在button.py的Builder.load_string中声明的任何信息

最佳答案

对象实例化后,就可以访问正确的数据。您可以使用时钟来确保实例化后获得它​​。
另外,在您的 kv 字符串中,您可能需要 BtnBar 而不是 ButtonBar
这是为了执行此操作而重写的 root.py。

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.lang.builder import Builder
from kivy.clock import Clock
from buttons import *

Builder.load_string("""
<Root>:
BtnBar: # corrected to BtnBar
""")

class BtnBar(ButtonBar):
def __init__(self, **kwargs):
super(BtnBar, self).__init__(**kwargs)
Clock.schedule_once(self.get_data)

def get_data(self, dt):
print(self.size_hint) # prints on second frame

class Root(FloatLayout):
pass

class AppDev(App):
def build(self):
return Root()

AppDev().run()

关于python - 访问 kivy 中不同模块中声明的信息时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56019573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com