与Requests,Flask和Kivy的python行为的奇怪区别

时间:2016-04-27 11:50:30

标签: python python-requests kivy

我试图制作一个简单的Kivy应用程序(我的第一个,有耐心),它将两个参数发送到我的localhost(Flask)并获得2个字符串作为回报。标签应显示字符串值。

当我不使用Kivy时,以下代码有效:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://127.0.0.1:5000/', params=payload)

print r.text

我的控制台显示我" value1value2"。显然,因为它是我从文档中复制的示例代码......

现在,当我将相同的代码放在像这样的Kivy应用程序中时:

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

我没有错误,但标签显示" Response [200]",而不是字符串值(" value1value2")...

我知道这是http状态代码,但为什么我在这里得到它?我想要我的价值观! ; - )

任何人都有线索?

添加了代码(用于文本输入):

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

1 个答案:

答案 0 :(得分:0)

访问content对象requests的{​​{1}}属性。

r