我试图制作一个简单的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()
答案 0 :(得分:0)
访问content
对象requests
的{{1}}属性。
r