我尝试创建一个Python服务器(使用python3)从客户机(用Kivy开发)接收信息。我试图使用套接字,但出现错误: “文本输入'不支持缓冲区接口” 如果您能告诉我我的错误在哪里,我将不胜感激:)
我的委托人:
from kivy.app import App
#kivy.require("1.8.0")
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
import socket
class LoginScreen(GridLayout):
def __init__(self,**kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.cols=2
my_socket = socket.socket()
host=socket.gethostname()
my_socket.connect((host,80))
self.add_widget(Label(text='username'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
my_socket.send(self.username)
my_socket.close()
self.add_widget(Label(text='Password'))
self.password = TextInput(multiline=False,password=True)
self.add_widget(self.password)
class SimpleKivy(App):
def build(self):
return LoginScreen()
if __name__=='__main__':
SimpleKivy().run()
我的服务器:
^{pr2}$感谢您的帮助:)
我的客户代码:
这是我的服务器代码:
^{pr2}$也许我需要写:self.my_插座.close()在客户端代码中?在
针对缓冲区的问题,需要将
bytes()
发送到套接字。它不接受字符串。 我认为使用套接字是如此低的水平,不是这里的最佳实践。尝试开发一个restapi,它接受来自客户端的请求并为您执行db操作。CherryPy非常小,对于这样一个简单的开始是很好的。回到客户端代码,尝试创建一个Button
,并将其绑定到一个方法,该方法将用户名发送到服务器。在当前代码中,您正在将kivy.uix.textinput.TextInput
对象发送到服务器,而您需要使用对象的text
属性发送它的文本。我建议做如下修改相关问题 更多 >
编程相关推荐