对不起,我的基本问题,但我一直在寻找一个小时的答案没有用。Kivy如何访问小部件的功能,没有KV只是python代码
这是我的基本代码:
class LoginScreen(Screen):
def __init__(self,**kwargs):
super(LoginScreen,self).__init__(**kwargs)
l = BoxLayout(orientation='vertical')
sound_btn = Button(text="Play Sound", font_size = 300)
word_bx = TextInput(multiline=False,hint_text='type here...',font_size=300)
submit_btn = Button(text = 'Submit', font_size=300)
submit_btn.bind(on_press = self.submitAction)
l.add_widget(sound_btn)
l.add_widget(word_bx)
l.add_widget(submit_btn)
self.add_widget(l)
def submitAction(self,*args):
if self.word_bx.text == KivyApp.word:
KivyApp.point+=1
self.word_bx.text=""
KivyApp.i +=1
print(KivyApp.point)
正如你所看到的,在submitAction功能我想引用word_bx部件,但是,这将引发一个错误,指出类LoginPage有没有属性word_bx。然后,我试图将“自我”放在自我的前面,但又引发了另一个错误。我究竟做错了什么?对不起我的无能..
您好感谢您的答案,这是不是解决办法。我必须将文本框添加到布局小部件,我不能仅仅声明它为自己的kivy不喜欢那样。 –
您将错误报告为Class LoginPage没有属性word_bx。我解释了原因。我不明白“我不能仅仅因为自己的kivy不喜欢这样就宣布它。” Kivy无法判断您的变量是否声明为self.word_bx或word_bx。你能更清楚一些基维不喜欢的东西吗?在你使AttributeError消失之后,你会得到什么其他的错误? – BoarGules
是的,但如果我做'self.word_bx'我得到一个错误,说该类没有属性word_bx。我认为它是我的错,因为我没有给你看整个代码,我不建立这个类,它是屏幕管理器的一部分,否则我认为你的解决方案会起作用。 –