The following code is for a simple server/client asplication that
allows the user to toggle between serve and or client modes and
send/recieve a message however i am getting an Attribute error on my
entry widgets when I try and call get() to get the port and ip address
from those fields, I'm sure it's something simple I haven't grasped...
#START
from Tkinter import *
from socket import *
import sys
class mySCS:
def __init__(self,root):
self.root = root
self.root.title("My Simple Client/Server ")
self.mode = "Server"
self.create_widgets()
self.root.mainloop()
return None
def create_widgets(self):
self.portLbl = Label(self.root,text="Port
number:").grid(sticky=E)
self.AddrLbl = Label(self.root,text="IP
Address:").grid(row=1,sticky=E)
self.myPort =
Entry(self.root,relief=SUNKEN).grid(column=1,row=0,sticky=W)
self.myAddress =
Entry(self.root,relief=SUNKEN).grid(row=1,column=1,sticky=W)
self.SCSToggle =
Radiobutton(self.root,text="Server",value="Server",variable=self.mode).grid(row=2,column=0,sticky=W)
self.SCSToggle =
Radiobutton(self.root,text="Client",value="Client",variable=self.mode).grid(row=2,column=1,sticky=W)
self.messageLbl = Label(self.root,text="Message:").grid(row=4)
self.myMessage = Text(self.root,height=6).grid(row=4,column=1)
self.statusLbl = Label(self.root,text="Status:").grid(row=5)
self.myStatus = Text(self.root,height=6).grid(row=5,column=1)
self.myConnect =
Button(self.root,text='Run',command=self.connect).grid(row=6,
columnspan=2)
return None
def connect(self):
Host = self.myAddress.get()
Port = self.myPort.get()
if self.mode == "Server":
sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.bind((Host,Port))
sockobj.listen(5)
myStatus.insert("Waiting on Conncetion...\n")
while 1:
connection, address = sockobj.accept()
myStatus.insert('Server connection by', address)
while 1:
data = connection.recv(1024)
if not data: break
self.myStatus.insert('Data Recievced ' +str(data))
connection.send('Echo=>' + data)
connection.close()
if self.mode == "Client":
message = myMessage.get()
if len(sys.argv) > 1:
Host =sys.argv[1]
if len(sys.argv) > 2:
message = sys.argv[2:]
sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.connect((Host, Port))
sockobj.send(message)
data = sockobj.recv(1024)
self.myStatus.insert('Client recived:', str(data))
sockobj.close()
return None
if __name__ == "__main__":
root = Tk()
myobj = mySCS(root)
#END
Error message:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
return self.func(*args)
File "C:\Documents and Settings\Matt\My
Documents\work\eclipse\workspace\PSI\View\mySCS.py", line 30, in
connect
Host = self.myAddress.get()
AttributeError: 'NoneType' object has no attribute 'get'
--
http://mail.python.org/mailman/listinfo/python-list