2016-04-27 7 views
0

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() 

Antwort

0

Zugang content Eigenschaft requests Objekt r.

print r.content 
+0

in 30 Sekunden haben Sie mein Problem gelöst. du bist mein Held dieses Tages !! Danke vielmals!! –

+0

finden Sie die verwandten Methoden, die auf das resultierende Objekt funktioniert, führen Sie 'dir (obj)' in Ihrem Fall 'dir (r)' –

+0

immer noch versuchen herauszufinden, wo/wie man dir (r) ... –

Verwandte Themen