Я создаю программу, которая позволяет мне использовать поисковые машины wolframalpha и wikipedia и все, что я хочу среди прочего.Моя проблема в том, что я не могу передать свою переменную ответа в экран ответов с экрана вопроса.
На сайте уже есть сообщения об этом, однако я подробно их просмотрел и ни один из них не показалсячтобы исправить мою проблему, он просто выдал другую ошибку.Если бы кто-нибудь мог помочь мне объяснить, что не так, это было бы очень признательно
Я пробовал так много разных вещей, что я не знаю, пропускаю ли я простую ошибку или нет.
Builder.load_string("""
<RootWidget>:
QIPA:
id:main
name: "mainprogramme"
QIPA_output:
id:output
name: "answer_screen"
<QIPA>:
BoxLayout:
orientation: 'vertical'
BoxLayout:
orientation: 'vertical'
size: root.size
spacing: 20
padding: 20
Label:
text: "Hello, I am QIPA, your virtual assistant. How may I be of service?"
font_size: "25sp"
TextInput:
id:question
multiline: False
BoxLayout:
Button:
text: "back"
font_size: "25sp"
<QIPA_output>:
BoxLayout:
orientation: 'vertical'
spacing: 20
padding: 20
Label:
id: output
text: root.answer
font_size: "10sp"
Button:
text: "back"
size_hint: 1,.3
font_size: "25sp"
on_press:root.BacktoMainProgramme()
""")
class QIPA(Screen):
def __init__(self, **kwargs):
super(QIPA, self).__init__(**kwargs)
Window.bind(on_key_down=self._on_keyboard_down)
def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
if keycode == 40: # 40 - Enter key pressed
self.OnEnter()
def OnEnter(self):
input = self.ids.question.text
input = input.lower()
try:
#wolframalpha
app_id = "G6YEVU-LJTJ5ETLHV"
client = wolframalpha.Client(app_id)
res = client.query(input)
answer = (next(res.results).text)
self.manager.current = "answer_screen"
print answer
except:
#wikipedia
wikipedia.set_lang("en")
answer = wikipedia.summary(input, sentences=3)
self.manager.current = "answer_screen"
global answer
class QIPA_output(Screen):
answer = StringProperty()
answer = QIPA.OnEnter.answer
def BacktoMainProgramme(self):
self.manager.current = "mainprogramme"
Это упрощенная версия моего кода, я получаю ошибки
AttributeError: 'QIPA_output' object has no attribute 'answer' or <bound method QIPA_output.answer of <Screen name=">> or Traceback (most recent call last)
в зависимости от того, что я пытался сделать с моим кодом