0
我做了一個應用程序與kivy的工作,發送「名稱」的服務器(與套接字),服務器插入「名稱」的數據庫,併發回「名稱「到客戶端(應用程序)和客戶端打印它。kivy-recv線插座不工作
我沒有得到任何錯誤,但該應用程序無法正常工作。它不開放。
我的客戶(應用程序):
# kivy.require("1.8.0")
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivy.uix.textinput import TextInput
from kivy.graphics import Line
from kivy.uix.button import Button
import socket
Builder.load_string("""
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
<MenuScreen>:
BoxLayout:
Button:
text: 'Sign Up'
on_press:
root.manager.transition.direction = 'left'
root.manager.current = 'settings'
Button:
text: 'Login'
on_press:
root.manager.transition.direction = 'left'
root.manager.current = 'settings'
<Searchi>:
BoxLayout:
Button:
text: 'send massage'
font_size: '20sp'
size_hint: (0.4,0.111)
pos_hint: {'y': 0,'x':0.6}
on_press:
root.manager.transition.direction = 'right'
root.manager.current = 'settings'
<SettingsScreen>:
BoxLayout:
FloatLayout:
LoginScreen
Button:
font_size: '20sp'
size_hint: (0.4,0.111)
pos_hint: {'y': 0,'x':0.6}
text: 'Back to menu'
on_press:
root.manager.transition.direction = 'right'
root.manager.current = 'menu'
""")
class LoginScreen(GridLayout):
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.cols = 2
self.my_socket = socket.socket()
#host = socket.gethostname()
#port = 8585
self.my_socket.connect(('127.0.0.1', 8081))
self.add_widget(Label(text='username'))
self.username = TextInput(multiline=False)
self.add_widget(self.username)
self.add_widget(Label(text='Password'))
self.password = TextInput(multiline=False, password=True)
self.add_widget(self.password)
self.submit_button = Button(text='sumbit',size_hint=(.5,
.25),font_size=20)
self.submit_button.bind(on_press=self.submit_username)
self.add_widget(self.submit_button)
def submit_username(self, *args):
# Make sure to validate the input before submitting to the server
self.my_socket.send(self.username.text.encode('utf-8'))
sm.current = 'searchi'
sm.transition.direction = 'left'
# Declare both screens
class MenuScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class Searchi(Screen):
def __init__(self, **kwargs):
super(Searchi, self).__init__(**kwargs)
self.my_socket = socket.socket()
self.my_socket.connect(('127.0.0.1', 8081))
self.msg=self.my_socket.recv(1024)
self.name=self.msg.decode('utf-8')
self.add_widget(Label(text="hello"+self.name,size_hint=(1,
1.7),font_size=20))
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(Searchi(name='searchi'))
sm.add_widget(SettingsScreen(name='settings'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
我的服務器:
import socket
import db # import my db
import time
server_socket = socket.socket()
server_socket.bind(('127.0.0.1',8081))
server_socket.listen(5)
(client_socket, client_address) = server_socket.accept()
while(True):
client_username = client_socket.recv(1024)
msg=client_username.decode('utf-8')
db.data_entry_login(msg,"dsfsds","dsfsfsdd","2") #insert to my db
msg=msg+"\r\n"
client_socket.send(msg.text.encode('utf-8'))
你能幫助我嗎?
這仍無法正常工作,如果我刪除客戶端的recv線。這是工作。你可以嘗試在你的電腦上運行它嗎?也許有我的電腦上的問題... –
@ShaharBitan啊是ofcourse更新了我的答案 – EL3PHANTEN
你能告訴我我怎麼寫?我是試圖做到這一點,它仍然沒有工作 –