From 468c7fa79a73718bd05b43bb3c64e16553fc895e Mon Sep 17 00:00:00 2001 From: Eveldee Date: Sat, 4 May 2019 20:01:26 +0200 Subject: [PATCH] Add lobby auto-refresh --- lobby.py | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/lobby.py b/lobby.py index 1139977..056e3ce 100644 --- a/lobby.py +++ b/lobby.py @@ -24,6 +24,8 @@ class Lobby: # Variables self.pseudo = tk.StringVar(win, "") self.message = tk.StringVar(win, "") + self.scoreLen = 0 + self.chatLen = 0 # Network self.networkManager = NetworkManager() @@ -68,22 +70,13 @@ class Lobby: scoreFrame = tk.LabelFrame(mainFrame, text = 'Score', bg = color.LEVEL_1, fg = color.PURPLE, font = (None, 12)) scoreFrame.grid(column = 0, row = 0, sticky = 'NSEW', padx = 5) self.scoreFrame = scoreFrame - rank = 1 - for score in self.networkManager.requestScores(): - pseudo, score = score.split(';') - self.addScoreEntry(rank, pseudo, score) - rank += 1 # Chat chatFrame = tk.LabelFrame(mainFrame, text = 'Chat', bg = color.LEVEL_1, fg = color.PURPLE, font = (None, 12)) chatFrame.grid(column = 1, row = 0, sticky = 'NSEW', padx = 5) self.chatFrame = chatFrame - for messsage in self.networkManager.requestMessages(): - split = messsage.split(';') - time, pseudo, content = split[0], split[1], ';'.join(split[2:]) - self.addChatEntry(time, pseudo, content) - bottomFrame = tk.Frame(chatFrame, bg = color.LEVEL_5) + bottomFrame = tk.Frame(chatFrame, bg = color.LEVEL_5, name = 'bottomFrame') bottomFrame.pack(side = tk.BOTTOM, fill = tk.X) entry = tk.Entry(bottomFrame, textvariable = self.message, bg = color.LEVEL_1, fg = color.GHOST, font = (None, 11)) entry.bind('', lambda e: self.sendMessage()) @@ -101,10 +94,44 @@ class Lobby: command = lambda: self.play() ).grid(column = 0, row = 1, columnspan = 2, sticky = 'NSEW', padx = 5, pady = 5) + self.update() + + def update(self): + messages = self.networkManager.requestMessages() + scores = self.networkManager.requestScores() + + # Score + if len(scores) > self.scoreLen: + for child in self.scoreFrame.children.values(): + child.pack_forget() + + self.scoreLen = len(scores) + + rank = 1 + for score in self.networkManager.requestScores(): + pseudo, score = score.split(';') + self.addScoreEntry(rank, pseudo, score) + rank += 1 + + # Chat + if len(messages) > self.chatLen: + for child in self.chatFrame.children.values(): + if child._name != 'bottomFrame': + child.pack_forget() + + self.chatLen = len(messages) + + for messsage in self.networkManager.requestMessages(): + split = messsage.split(';') + time, pseudo, content = split[0], split[1], ';'.join(split[2:]) + self.addChatEntry(time, pseudo, content) + + self.win.after(1000, lambda: self.update()) + def nameConfirm(self): pseudo = self.pseudo.get().replace('@', ' ').replace(';', ' ') - if pseudo == '': + if pseudo == '' or pseudo.isspace(): return self.lobbyDisplay() @@ -124,6 +151,7 @@ class Lobby: now = datetime.now().time() time = f"{now.hour}:{str(now.minute).zfill(2)}" self.addChatEntry(time, pseudo, message) + self.chatLen += 1 self.message.set('') def sendScore(self, score):