No older revisions available
No older revisions available
잡담 ¶
- 저번주에는 다들 바쁜지라 못 했구려.. 요번주는 언제 할지 미리 정해놓자 수욜이 어떨지?? - 민수
해야 할 일 ¶
- Login : 현재 채팅에 사용중인 ID와 사용하고자 하는 ID를 비교하여, 채팅 참가 허가 유무를 확인한다.
- ChatMain? : 채팅의 주 인터페이스를 관리하는 클래스이다. 이 클래스에서 대부분의 GUI를 관리하고, 채팅메세지보여준다. 또한 채팅에 접속한 사람들의 ID를 보여준다.
- ReceiveMessage? : 서버로부터 전달되는 메시지를 받아서 ChatMain? 클래스의 메시지 출력 화면에 보여주는 역할을 한다.
- SendMessage? : 서버로 메시지를 보낸다.
- UserList? : ChatMain? 클래스의 사용자 List에 접속한 사용자 ID를 보여주는 기능을 한다.
코드 ¶
~cpp
import tkSimpleDialog
from Tkinter import *
class Main:
def __init__(self, master):
self.frame = Frame(master)
#for show texts
self.showscrollbar = Scrollbar(master)
self.showscrollbar.place(x = 550, y = 0, width = 50, height = 550)
self.show = Listbox(master, yscrollcommand = self.showscrollbar.set)
self.show.place(x = 0, y = 0, width = 585, height = 550)
for i in range(400):#test scrollbar
self.show.insert(END, str(i))
self.showscrollbar.config(command = self.show.yview)
#for user list
self.listscrollbar = Scrollbar(master)
self.listscrollbar.place(x = 800-50, y = 0, width = 50, height = 600)
self.list = Listbox(master, yscrollcommand = self.listscrollbar.set)
self.list.place(x = 600, y = 0, width = 185, height = 600)
for i in range(400):#test scrollbar
self.list.insert(END, str(i))
self.listscrollbar.config(command = self.list.yview)
#for input a string(?)
self.edit = Entry(master)
self.edit.place(x = 0, y = 550 , width = 600 , height = 50)
def getMassage(self, event):
print self.edit.get()
self.edit.delete(0, END)
class User:
def __init__(self, aID):
self.ID = aID
self.message = ''
self.isinEntry = True
if __name__ == "__main__":
root = Tk()
root.configure( width = 800, height = 600)
login = tkSimpleDialog
## login.Place.place_configure( root, x = 100, y = 100) #position
## csock = socket(AF_INET, SOCK_STREAM)
## csock.connect(('', 8000))#make socket, connect
## user = User(ID)
## csock.send(User)
## user = clientsock.recv(1024)
ID = ''
while not ID:
ID = login.askstring(title = "Login", prompt="Enter ID", parent = root)
else:
win = Main(root)
root.bind("<Return>", win.getMassage)
root.mainloop()
~cpp
from Tkinter import *
root = Tk()
def callback(event):
print "click at"
root.bind("<Return>", callback)
root.mainloop()
수정중 ¶
~cpp
import tkSimpleDialog
from Tkinter import *
from socket import *
class Main:
def __init__(self, aMaster, aUser, aSock):
self.frame = Frame(aMaster)
#for show texts
self.showscrollbar = Scrollbar(aMaster)
self.showscrollbar.place(x = 550, y = 0, width = 50, height = 550)
self.show = Listbox(aMaster, yscrollcommand = self.showscrollbar.set)
self.show.place(x = 0, y = 0, width = 585, height = 550)
self.showscrollbar.config(command = self.show.yview)
#for user list
self.listscrollbar = Scrollbar(aMaster)
self.listscrollbar.place(x = 800-50, y = 0, width = 50, height = 600)
self.list = Listbox(aMaster, yscrollcommand = self.listscrollbar.set)
self.list.place(x = 600, y = 0, width = 185, height = 600)
self.listscrollbar.config(command = self.list.yview)
#for input a string
self.edit = Entry(aMaster)
self.edit.place(x = 0, y = 550 , width = 600 , height = 50)
def sendMessage(self, event):
aUser.message = self.edit.get()
self.edit.delete(0, END)
csock.send(aUser)
self.recieveMassage()
def recieveMassage(self):
user = aSock.recv(1024)
self.show(user)
def show(self, aUser):
self.show.insert(END, "< " + str(aUser.ID) + " > : " + str(aUser.message))
class User:
def __init__(self, aID):
self.ID = aID
self.message = ''
self.isinEntry = True
if __name__ == "__main__":
root = Tk()
root.configure( width = 800, height = 600)
login = tkSimpleDialog
## login.Place.place_configure( root, x = 100, y = 100) #position
csock = socket(AF_INET, SOCK_STREAM)
try:
csock.connect(('165.194.17.59', 13))#make socket, connect
except:
print 'connect refuse'
csock.recv(1024)
ID = ''
while not ID:
ID = login.askstring(title = "Login", prompt="Enter ID", parent = root)
user = User(ID)
## csock.send(user)
## user = csock.recv(1024)
else:
win = Main(root, user, csock)
root.bind("<Return>", win.sendMessage)
while True:
user = csock.recv(1024)
root.mainloop()