Ich versuche eine einfache Kivy-App zu machen (meine erste, habe Geduld), die zwei Parameter an meinen localhost (Flask) sendet und dafür 2 Strings bekommt. Ein Label sollte die String-Werte anzeigen.Merkwürdiger Unterschied im Python-Verhalten mit Requests, Flask und Kivy
Wenn ich nicht Kivy verwenden Sie den folgenden Code funktioniert:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://127.0.0.1:5000/', params=payload)
print r.text
Meine Konsole zeigt mir "value1value2". Offensichtlich, weil es den Beispielcode, das ich aus der Dokumentation kopiert ...
Nun, wenn ich den gleichen Code in einer Kivy App so:
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
import requests
kv = '''
BoxLayout:
orientation: 'vertical'
Label:
text: app.text
Button:
text: 'call Flask'
on_press: app.clicked()
'''
class MyApp(App):
text = StringProperty("Show me the Params!")
def build(self):
return Builder.load_string(kv)
def clicked(self):
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://127.0.0.1:5000/', params=payload)
self.text = str(r)
print r
if __name__ == '__main__':
MyApp().run()
ich keine Fehler, aber das Label zeigt "Antwort [200]", anstelle der String-Werte ("value1value2") ...
Ich weiß, das ist der http-Status-Code, aber warum bekomme ich es hier? Ich will meine Werte! ;-)
Wer hat eine Ahnung?
Added-Code (für die Texteingabe):
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
import requests
kv = '''
BoxLayout:
orientation: 'vertical'
Label:
text: app.text
Button:
text: 'call Flask'
on_press: app.clicked()
TextInput:
id: text_input
'''
class MyApp(App):
text = StringProperty("Show me the Params!")
intxt = StringProperty("Input_text")
def build(self):
return Builder.load_string(kv)
def clicked(self):
payload = {'key1': self.intxt, 'key2': 'value2'}
r = requests.get('http://127.0.0.1:5000/', params=payload)
self.text = str(r.content)
print r.content
if __name__ == '__main__':
MyApp().run()
in 30 Sekunden haben Sie mein Problem gelöst. du bist mein Held dieses Tages !! Danke vielmals!! –
finden Sie die verwandten Methoden, die auf das resultierende Objekt funktioniert, führen Sie 'dir (obj)' in Ihrem Fall 'dir (r)' –
immer noch versuchen herauszufinden, wo/wie man dir (r) ... –