您的位置:首页 > 编程语言 > Python开发

Python——简单QQ聊天(类的继承,异常处理,socket,多线程,GUI)

2020-02-02 14:29 1286 查看

简单QQ聊天

import tkinter as tk
import tkinter.messagebox
import tkinter.scrolledtext
from tkinter import *
import socket
import threading
def sendfun():
txt=varSendtxt.get()
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
addr=('127.0.0.1',5002)
cont=txt.encode('UTF-8')
s.sendto(cont,addr)
print('send:'+txt)
varSendtxt.set('')
def listenshow():
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('0.0.0.0',5003))
while True:
data,addr=s.recvfrom(1024)
txt=data.decode('UTF-8')
txtCon.insert(END,txt+'\n')

win=tk.Tk()
varSendtxt=tk.StringVar(value='')
win['height']=400
win['width']=600
txtCon=tk.scrolledtext.ScrolledText(win,wrap=tk.WORD)
txtCon.place(x=5,y=5,width=600,height=300)
txtCon.insert(END,'提示:连接成功!!!'+'\n')
#单行文本框
en=tk.Entry(win,textvariable=varSendtxt)
en.place(x=5,y=320,width=600,height=20)

b1=tk.Button(win,text="发送",command=sendfun)
b1.place(x=30,y=350,width=100)
b2=tk.Button(win,text="取消")
b2.place(x=130,y=350,width=100)

t=threading.Thread(target=listenshow,args=())
t.start()

win.mainloop()

类的继承

#类的继承
class A():
ax1=0
def __init__(self,p=0):
print('A')
self.ax1=p
def fun1(self):
print('A_fun1')
print(self.ax1)
x=A(100)
y=A()
x.fun1()
y.fun1()
print("************************************")
class B(A):
def __init__(self,p=0):
super().__init__(p*2)
print('B')
def fun2(self):
print("B_fun2")
z=B()
z.fun1()
print("````````````````````````````````")
t=B(10)
t.fun1()
t.fun2()

异常处理

#try except
x=input("输入整数:")
try:
y=int(x)
except ValueError as e:
print(e)
#try except finally
try:
open('c:/a.txt','r').read()
except FileNotFoundError as e:
print(e)
finally:
print("this is 结束")

socket

#socket
import socket
#发送端
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
addr=('127.0.0.1',5001)
while True:
txt=input("请输入要发送的消息:")
s.sendto(txt.encode('UTF-8'),addr)
#接收端
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('0.0.0.0',5001))
while True:
data,addr=s.recvfrom(1024)
print(data.decode('UTF-8'))

多线程

#多线程
import threading
def fun1():
for i in range(50):
print('我是线程1')
def fun2():
for i in range(50):
print('我是线程2')
t1=threading.Thread(target=fun1,args=())
t2=threading.Thread(target=fun2,args=())
t1.start()
t2.start()

GUI

#GUI
import tkinter as tk
import tkinter.messagebox
from tkinter import *
def fun1():
x=en1.get()
y=en2.get()
if x=='amdin' and y=='123456':
tk.messagebox.showinfo(title='提示',message="登陆成功")
else:
tk.messagebox.showerror(title='提示',message="用户名或密码错误")
def fun2():
en1.delete(0,END)
en2.delete(0,END)

root=tk.Tk()
root.title('登录界面')
root['height']=200
root['width']=300
#放一个密码和用户名的验证
la1=tk.Label(root,text='用户名')
la1.place(x=5,y=25,width=80,height=20)
en1=tk.Entry(root)
en1.place(x=100,y=25,width=180,height=20)
la2=tk.Label(root,text='密码')
la2.place(x=5,y=55,width=80,height=20)
en2=tk.Entry(root,show='*')
en2.place(x=100,y=55,width=180,height=20)
b1=tk.Button(root,text='登录',command=fun1)
b1.place(x=50,y=100,width=100)
b2=tk.Button(root,text='取消',command=fun2)
b2.place(x=150,y=100,width=100)
root.mainloop()
  • 点赞
  • 收藏
  • 分享
  • 文章举报
可一z可再 发布了18 篇原创文章 · 获赞 1 · 访问量 240 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: