一個很low的登錄界面
阿新 • • 發佈:2018-09-04
.so 服務 .com eat soc mman 變量賦值 lag 類型
import tkinter as tk from tkinter import messagebox import socket def receive(name=None,password=None): sk = socket.socket() # 創建客戶套接字 sk.connect((‘192.168.13.142‘, 8898)) # 嘗試連接服務器 send=name+"|"+password send1=send.encode("utf-8") sk.send(send1) ret = sk.recv(1024) #對話(發送/接收) ret1=ret.decode("utf-8") sk.close() return ret1 def denglu(): window = tk.Tk() window.title(‘歡迎登陸‘) window.geometry(‘400x250‘) canvas = tk.Canvas(window, height=100, width=200)#創建畫布 image_file = tk.PhotoImage(file=‘logo.png‘)#加載圖片文件 image = canvas.create_image(0,0, anchor=‘nw‘, image=image_file)#將圖片置於畫布上 canvas.pack(side=‘top‘)#放置畫布(為上端) tk.Label(window, text=‘User name: ‘).place(x=50, y= 120)#創建一個`label`名為`User name: `置於坐標(50,150) tk.Label(window, text=‘Password: ‘).place(x=50, y= 150) var_usr_name = tk.StringVar()#定義變量 var_usr_name.set(‘[email protected]‘)#變量賦值‘[email protected]‘ entry_usr_name = tk.Entry(window, textvariable=var_usr_name)#創建一個`entry`,顯示為變量`var_usr_name`即圖中的`[email protected]` entry_usr_name.place(x=160, y=120) var_usr_pwd = tk.StringVar() entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show=‘*‘)#`show`這個參數將輸入的密碼變為`***`的形式 entry_usr_pwd.place(x=160, y=150) flag=0 def usr_login(): nonlocal flag if flag<3: usr_name = var_usr_name.get() usr_pwd = var_usr_pwd.get() sign_s=receive(str(usr_name),str(usr_pwd)) # sign_s=sign_s.decode("utf-8") if sign_s=="登陸成功": messagebox.showinfo(title=‘‘, message=‘登陸成功‘) flag=0 exit() else: flag += 1 messagebox.showinfo(title=‘‘, message=‘賬戶或密碼錯誤,剩余登錄次數為%s‘ % (3 - flag)) if flag>=3: exit() btn_login = tk.Button(window, text=‘Login‘, command=usr_login)#定義一個`button`按鈕,名為`Login`,觸發命令為`usr_login` btn_login.place(x=160, y=180) window.mainloop() denglu()
客戶端
import socket server = socket.socket() server.bind((‘192.168.13.142‘,8001)) server.listen(5) while True: conn,addr = server.accept() # 字節類型 while True: data = conn.recv(1024) # 阻塞 if data == b‘exit‘: break response = data + b‘ SB‘ conn.send(response) conn.close()
一個很low的登錄界面