参考链接: Python | 使用Tkinter进行消息编码-解码
一.类的继承
class people:
name=""
def __init__(self,name=""):
self.name=name
def self_introduce(self):
print("我是",self.name)
class woman(people):
sex="女"
def __init__(self,name):
super().__init__(name)
print("我是一个%s生"%self.sex)
def say(self):
print("很高兴认识大家")
Alice_Father=people("Alice_Father")
Alice_Father.self_introduce()
print("-----------------")
Alice=woman("Alice")
Alice.self_introduce()
Alice.say()
二.try excpet
x=input("请输入一个整数")
y=0
try: #1.检查是否出现错误
y=int(x)
except: #2.出现错误时执行
print("输入错误")
finally:
print("结束") #3.不管对错都会执行
三.UDP通讯
1.发送方
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #1.创建套接字
addr=("127.0.0.1",5001) #2.发送地址
while 1: #3.循环输入发送信息
txt=input("请输入要发送的消息:") #4.编码发送
s.sendto(txt.encode("utf-8"),addr)
2.接收方
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #1.创建套接字
s.bind(("0.0.0.0",5001)) #2.绑定接收端口
while 1: #3.接收消息并解码
data,addr=s.recvfrom(1024)
print(data.decode("UTF-8"))
四.多线程
def fun1():
for i in range(10):
print("我是线程1")
def fun2():
for i in range(10):
print("我是线程2")
import threading
t1=threading.Thread(target=fun1,args=()) #创建线程t1,t2抢占cpu交替进行
t2=threading.Thread(target=fun2,args=())
t1.start()
t2.start()
五.GUI
import tkinter as tk
import tkinter.messagebox
from tkinter import *
#----------------------一、定义按钮功能--------------------------------------
#登录按钮:验证用户登录信息是否正确
def fun1():
x=en1.get() #1.获取文本
y=en2.get()
if x=="admin" and y=="123456": #2.验证
tk.messagebox.showinfo(message="登陆成功")#弹出提示框
else:
tk.messagebox.showerror(message="用户名或密码错误")#弹出错误框
#取消按钮:清空输入的信息
def fun2():
en1.delete(0,END)
en2.delete(0,END)
#0.创建界面
root=tk.Tk() #1.创建界面
root["height"]=150 #2.定义界面高度
root["width"]=300 #3.定义界面宽度
#1.用户名---文本框
lal=tk.Label(root,text="用户名") #在root中创建标签
lal.place(x=5,y=5,width=80,height=20) #向root放置标签
en1=tk.Entry(root) #在root中创建文本框
en1.place(x=100,y=5,width=180,height=20) #向root放置文本框
#2.密码-----密码框
lal2=tk.Label(root,text="密码")
lal2.place(x=5,y=5+30,width=80,height=20)
en2=tk.Entry(root,show="*") #show:将输入的内容用*代替
en2.place(x=100,y=5+30,width=180,height=20)
#3.登录------按钮
b1=tk.Button(root,text="登录",command=fun1) #定义:按钮名称+按钮功能
b1.place(x=50,y=25+30+30,width=100) #定义:按钮大小+按钮位置
#4.取消------按钮
b2=tk.Button(root,text="取消",command=fun2)
b2.place(x=180,y=25+30+30,width=100)
root.mainloop()#界面生成
六.综合训练:用python实现有界面的聊天功能
注意: 1. 使用jupyter Notebook,软件容易出问题,采用两个Ipython进行实验 2. 使用时,两个程序的发送地址和接收地址的端口号要进行对调**
#---------------一、导入模块--------------------------
import socket
import threading
import tkinter as tk
import tkinter.messagebox
import tkinter.scrolledtext
from tkinter import *
#---------------二、定义按钮功能---------------------------
#1.发送
def fun1():
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #申请套接字
addr=("127.0.0.1",5001) #发送地址(IP地址+端口号)
txt=en.get() #发送的消息
s.sendto(txt.encode("UTF-8"),addr)
en.delete(0,END) #清空发送框
#2.接收
def fun2():
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(("0.0.0.0",5003)) #绑定接收端口
while 1: #循环接收消息,插入到滑动窗口
data,addr=s.recvfrom(2048) #接收消息和发送方的地址
print(addr)
txtCon.insert(END,data.decode("UTF-8")+"\n")
#3.取消
def fun3():
en.delete(0,END) #清空发送框
#-----------------三、定义界面-------------------------
#1.窗口
win=tk.Tk()
win["height"]=400
win["width"]=600
#2.滑动面板
txtCon=tk.scrolledtext.ScrolledText(win,wrap=tk.WORD)
#txtCon.pack(fill=tk.BOTH)
txtCon.place(x=5,y=5,width=600,height=300)
#3.发送框
en=tk.Entry(win,text="")
en.place(x=5,y=5+300+20,width=600,height=20)
#4.按钮
b1=tk.Button(win,text="发送",command=fun1)
b1.place(x=30,y=350,width=100)
b2=tk.Button(win,text="取消",command=fun3)
b2.place(x=130,y=350,width=100)
#----------------四、创建接收线程--------------
t=threading.Thread(target=fun2,args=())
t.start()
win.mainloop()
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。