<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94%2F%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8</id>
	<title>2학기파이선스터디/클라이언트 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94%2F%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8&amp;action=history"/>
	<updated>2026-05-15T20:49:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8&amp;diff=26746&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8&amp;diff=26746&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:13Z</updated>

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