Reputation:
I'm making a basic chat client in Python, but it won't open the window. It seems to freeze when the server thread is started. I'm using the socketserver
module.
class ChatClient(Frame):
def CreateWidgets(self):
self.whoislist = Label(self,text = '')
def updateWhoIs(peopleList):
finishlist = 'People:'
for person in peopleList:
finishlist += ('\n' + person)
self.whoislist.config(text = finishlist)
self.whoislist.grid(row = 1, columnspan = 7)
self.mainchat = Text(self)
self.mainchat.grid(columnspan = 5, rowspan = 3, row = 2, column = 3)
peeps = []
def __init__(self,master = None):
Frame.__init__(self,master)
self.grid()
self.CreateWidgets()
print('Huh.')
self.server = socketserver.TCPServer(('127.0.0.1',1337),MyTCPHandler)
self.sthread = Thread(target = self.server.serve_forever())
self.sthread.start()
print('Yay')
Upvotes: 0
Views: 75
Reputation: 21453
you call self.server.serve_forever()
while initializing the thread, setting its return value to the target of the thread, however as the name implies: it lasts forever. Instead specify the method (without calling it) as the target:
self.sthread = Thread(target = self.server.serve_forever)
and it should work although be careful how MyTCPHandler
interacts with the Tk application as tkinter is not thread safe.
Upvotes: 1