U E D R , A S I H C RSS

2학기파이선스터디/클라이언트

알림

  • 클라이언트 : 나휘동, 임민수, 장창재

잡담

  • 저번주에는 다들 바쁜지라 못 했구려.. 요번주는 언제 할지 미리 정해놓자 수욜이 어떨지?? - 민수

해야 할 일


  • 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()

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:13
Processing time 0.0221 sec