알림 ¶
- 클라이언트 : 나휘동, 임민수, 장창재
잡담 ¶
- 저번주에는 다들 바쁜지라 못 했구려.. 요번주는 언제 할지 미리 정해놓자 수욜이 어떨지?? - 민수
해야 할 일 ¶
- 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()