我最近开始学习python和kivy,出于某种原因,我一直在学习
AttributeError: 'super' object has no attribute '__getattr__
目前,我的代码只是为了测试这一点,我知道还有其他类似的帖子存在,但我遵循了他们正在做的事情来修复它,我不断得到相同的错误
这部分是文本。py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
Builder.load_file('text.kv')
# Declare both screens
class MenuScreen(Screen):
pass
class WritingScreen(Screen):
pass
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(WritingScreen(name='Write'))
screens = [Screen(name='Title {}'.format(i)) for i in range(2)]
class TestApp(App):
def build(self):
return sm
def write(self):
sm.current = 'Write'
def process(self):
text = self.root.ids.input.text
print("Hello")
if __name__ == '__main__':
TestApp().run()
这是我的Text.kv文件
<MenuScreen>:
FloatLayout:
Button:
text: 'Write'
on_press: app.write()
size_hint: .3, .2
background_color: 1, 2, 1, 1
pos_hint: {'x': .35, 'y': .4}
<WritingScreen>:
FloatLayout:
TextInput:
id: input
hint_text: "Ello There... Yaren't supposed to be here yet..."
size_hint: .8, .1
pos_hint: {'x':0, 'y': 0.9}
Button:
text: 'print'
on_press: app.process()
size_hint: .2, .1
pos_hint: {'x':.8, 'y': .8}
Button:
text: 'Back to menu'
on_press: root.manager.current = 'menu'
size_hint: .2, .1
pos_hint: {'x':.8, 'y': .9}
再次,如果这是一个重复的问题,我很抱歉,但我尝试过的每一篇文章都不适合我。谢谢你的帮助,我还是一个初学者,希望你能给我一些建议!)
您在
process()
方法中的行:正在尝试使用},就好像它在}在
input
{root
(即ScreenManager
)的ids
中一样,但是ids
字典是在kv
规则的根中定义的。所以input
{WritingScreen
的ids
中。要访问WritingScreen
的ids
,您可以将该行代码更改为如下内容:相关问题 更多 >
编程相关推荐