1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| #!/usr/bin/python3
from tkinter import *
import time
import socket
import decimal
class Connection(Frame):
def valider(self):
if (self.ip.get()=="" or self.port.get()=="" or self.pseudo.get()==""):
self.erreur["text"] = "Veuillez remplir tous les champs avant de valider"
else:
global adresse_ip
global port_connection
global pseudo_user
adresse_ip = self.ip.get()
port_connection = self.port.get()
pseudo_user = self.pseudo.get()
Connection.quit(self)
def __init__(self,master=None):
Frame.__init__(self, master)
self.titre1 = Label(text="Adresse IP :")
self.titre1.pack(side="top")
self.ip = StringVar()# Prévoir la variable pour recevoir le texte saisi
ip = Entry(textvariable=self.ip, width=30)
ip.pack(side="top")
self.titre2 = Label(text="Port :")
self.titre2.pack(side="top")
self.port = StringVar()# Prévoir la variable pour recevoir le texte saisi
port = Entry(textvariable=self.port, width=30)
port.pack(side="top")
self.titre3 = Label(text="Pseudo :")
self.titre3.pack(side="top")
self.pseudo = StringVar()# Prévoir la variable pour recevoir le texte saisi
pseudo = Entry(textvariable=self.pseudo, width=30)
pseudo.pack(side="top")
self.erreur = Label(text="", fg="red")
self.erreur.pack(side="bottom")
self.validation=Button(text="Valider", command=self.valider)
self.validation.pack(side="bottom")
connection = Connection()
connection.mainloop()
connection.destroy()
class Chat(Frame):
global adresse_ip
global port_connection
global pseudo_user
def afficher(e, caca=0):
if (e.saisie.get()[0:2]=="/w" and e.saisie.get()!=""):
global pseudo_envoi_msg
pseudo_envoi_msg=""
global message_envoi
message_envoi=""
for a in range(3, len(e.saisie.get())):
if (e.saisie.get()[a]==" "):
break
pseudo_envoi_msg=pseudo_envoi_msg + e.saisie.get()[a]
message_envoi=e.saisie.get()[(len(pseudo_envoi_msg)+3):]
if (e.saisie.get()[0]=="/" and e.saisie.get()[0:2]!="/w"):
e.saisie.delete(0, END)
return 0
if (caca != 0 and e.coched.get() == 0 or e.saisie.get()==""):
return 0
if (e.saisie.get()[0:2]!="/w"):
e.messages.insert(END, time.strftime('[%H:%M]', time.localtime()) + "\t" + "<" + pseudo_user + "> :")
e.messages.tag_add("message", float(e.messages.index('end').split('.')[0]) - 3.0, float(e.messages.index('end').split('.')[0]) - 3.0 + 0.12 + float(len(pseudo_user)/100))
e.messages.tag_config("message", foreground="cornflower blue")
e.messages.insert(END, "\t" + e.saisie.get() + "\n\n")
else:
e.messages.insert(END, time.strftime('[%H:%M]', time.localtime()) + "\t" + "à " + "<" + pseudo_envoi_msg + "> :" + "\t" + message_envoi + "\n\n")
e.messages.tag_add("prives", float(e.messages.index('end').split('.')[0]) - 3.0, END)
e.messages.tag_config("prives", foreground="green")
e.messages.see(END)
e.saisie.delete(0, END)# Plus propre que 1000
print (float(e.messages.index('end').split('.')[0]) - 3.0)
print (float(e.messages.index('end').split('.')[0]) - 3.0 + 0.12 + float(len(pseudo_user)/100))
def __init__(self, master=None):
Frame.__init__(self, master)
self.saisir = StringVar()# Prévoir la variable pour recevoir le texte saisi
self.saisie = Entry(textvariable=self.saisir, width=60)
self.saisie.bind("<Return>", self.afficher)
self.saisie.pack(side="bottom")
self.envoi=Button(text="Envoyer", command=self.afficher)
self.envoi.pack(side="bottom")
self.coched = IntVar()# Prévoir la variable pour le résultat de la checkbox
self.coche = Checkbutton(variable = self.coched, text="Appuyer sur Entrée pour envoyer", offvalue = 0)
self.coche.pack(side="bottom")
self.coche.invoke()# On coche automatiquement
self.scrollbar = Scrollbar()
self.messages = Text(yscrollcommand=self.scrollbar.set)
self.messages.pack(side=LEFT, fill=BOTH)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.scrollbar.config(command=self.messages.yview)
win = Chat()
win.mainloop() |
Partager