beatrx
Aralık 11, 2022, 5:10ös
1
Enter tuşuna bastığımda mesajımı göndermek istiyorum.Bir türlü yapamadım.
yourMessage = Entry(pencere, width=50)
yourMessage.insert(0, 'Name')
yourMessage.grid(row=1, column=0, padx=10, pady=10)
yourMessage.focus()
yourMessage.selection_range(0, END)
def sendMessage():
clientMessage = yourMessage.get()
messages.insert(END, '\n' + 'You: ' + clientMessage)
client.send(clientMessage.encode('utf8'))
yourMessage.delete(0, END)
messageSendButton = Button(pencere, text='Send', width=20, command=sendMessage)
messageSendButton.grid(row=2, column=0, padx=10, pady=10)
def recvMessage():
while True:
serverMessage = client.recv(1024).decode('utf8')
messages.insert(END, '\n' + serverMessage)
recvThread = Thread(target=recvMessage)
recvThread.daemon = True
recvThread.start()
pencere.mainloop()
tkinter’da bind adında bir method olmalı.
ilk parametresi string veri türünde ilgili olayı gerçekleştirecek belirteç, ikinci parametre de bu olayı gerçekleştirecek bir fonksiyon alıyor.
Atıyorum:
entry.bind("<return>",lambda e: fonksiyon(e))
def fonksiyon(event):
entry.delete() # methodun adı yanlış olabilir
... #diğer işlemler
Bu şekilde kullanıp kodunuzu düzenleyin test edin.
import satırları eksik, ilk satırdan başlayarak kodu tekrar gönderirmisin.
def sendMessage(event=None):
clientMessage = yourMessage.get()
messages.insert(END, '\n' + 'You: ' + clientMessage)
client.send(clientMessage.encode('utf8'))
yourMessage.delete(0, END)
def recvMessage():
while True:
serverMessage = client.recv(1024).decode('utf8')
messages.insert(END, '\n' + serverMessage)
recvThread = Thread(target=recvMessage)
recvThread.daemon = True
recvThread.start()
yourMessage = Entry(pencere, width=50)
yourMessage.insert(0, 'Name')
yourMessage.grid(row=1, column=0, padx=10, pady=10)
yourMessage.focus()
yourMessage.selection_range(0, END)
yourMessage.bind("<Return>", sendMessage)
messageSendButton = Button(pencere, text='Send', width=20, command=sendMessage)
messageSendButton.grid(row=2, column=0, padx=10, pady=10)
pencere.mainloop()
bu event yourmessage isimli entry içine yazı yazıldıktan sonra entere basmak için ayarlandı.
entry ve buton kısmını aşağı aldım yoksa hata verecekti. kodun tamamı olmadığı için deneme şansım olmadı.
1 Beğeni
beatrx
Aralık 12, 2022, 12:48ös
5
Ben size client.py dosyasını atıyım çünkü dediğinizi denedim olmadı.
from socket import *
from threading import *
from tkinter import *
from tkinter import scrolledtext
client = socket(AF_INET, SOCK_STREAM)
HOST = '192.168.1.109'
PORT = 5008
client.connect((HOST, PORT))
pencere = Tk()
pencere.title('CHAT : ' + HOST + ':' + str(PORT))
messages = Text(pencere, width=50)
messages.grid(row=0, column=0, padx=10, pady=10)
yourMessage = Entry(pencere, width=50)
yourMessage.insert(0, 'Enter Name')
yourMessage.grid(row=1, column=0, padx=10, pady=10)
yourMessage.focus()
yourMessage.selection_range(0, END)
def sendMessage():
clientMessage = yourMessage.get()
messages.insert(END, '\n' + 'You: ' + clientMessage)
client.send(clientMessage.encode('utf8'))
yourMessage.delete(0, END)
messageSendButton = Button(pencere, text='Send', width=20, command=sendMessage)
messageSendButton.grid(row=2, column=0, padx=10, pady=10)
def recvMessage():
while True:
serverMessage = client.recv(1024).decode('utf8')
messages.insert(END, '\n' + serverMessage)
recvThread = Thread(target=recvMessage)
recvThread.daemon = True
recvThread.start()
pencere.mainloop()
from tkinter import *
from socket import *
from threading import *
client = socket(AF_INET, SOCK_STREAM)
HOST = '192.168.1.109'
PORT = 5008
client.connect((HOST, PORT))
pencere = Tk()
pencere.title(f"CHAT:{HOST}:{str(PORT)}")
def sendMessage(event=None):
clientMessage = yourMessage.get()
messages.insert(END, '\n' + 'You: ' + clientMessage)
client.send(clientMessage.encode('utf-8'))
yourMessage.delete(0, END)
def recvMessage():
while True:
serverMessage = client.recv(1024).decode('utf-8')
messages.insert(END, '\n' + serverMessage)
recvThread = Thread(target=recvMessage)
recvThread.daemon = True
recvThread.start()
messages = Text(pencere, width=50)
messages.grid(row=0, column=0, padx=10, pady=10)
yourMessage = Entry(pencere, width=50)
yourMessage.insert(0, 'Enter Name')
yourMessage.grid(row=1, column=0, padx=10, pady=10)
yourMessage.focus()
yourMessage.selection_range(0, END)
yourMessage.bind("<Return>", sendMessage)
messageSendButton = Button(pencere, text='Send', width=20, command=sendMessage)
messageSendButton.grid(row=2, column=0, padx=10, pady=10)
pencere.mainloop()
beatrx
Aralık 19, 2022, 3:46ös
9
Bir şey daha sormak istiyorum.Chat pneceresinin içine de yazı yazılıyor bunu nasıl kapatabilirim acaba?