From 17d87870e7960d02f3c845125cf9b286d5da2101 Mon Sep 17 00:00:00 2001 From: MikeTheWatchGuy Date: Fri, 24 Aug 2018 21:23:57 -0400 Subject: [PATCH] "Dashboard" design for progress meters. Dashboard type of design that includes 20 Progress Meters. Able to see the progess meters after they have competed. --- Demo_Chatterbot.py | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/Demo_Chatterbot.py b/Demo_Chatterbot.py index a0e69844..15cfa808 100644 --- a/Demo_Chatterbot.py +++ b/Demo_Chatterbot.py @@ -1,4 +1,4 @@ -import PySimpleGUI as gui +import PySimpleGUI as g from chatterbot import ChatBot import chatterbot.utils @@ -9,10 +9,34 @@ The GUI is used to show progress bars during the training process and to collect user input that is sent to the chatbot. The reply is displayed in the GUI window ''' -# redefine the chatbot text based progress bar with a graphical one -def print_progress_bar(description, iteration_counter, total_items, progress_bar_length=20): - gui.EasyProgressMeter(description, iteration_counter, total_items) +# Create the 'Trainer GUI' +MAX_PROG_BARS = 20 +bars = [] +texts = [] +training_layout = [[g.T('TRAINING PROGRESS', size=(20,1), font=('Helvetica', 17))]] +for i in range(MAX_PROG_BARS): + bars.append(g.ProgressBar(100, size=(30, 5))) + texts.append(g.T(' '*20)) + training_layout += [[texts[i], bars[i]]] +training_form = g.FlexForm('Training') +training_form.Layout(training_layout) +current_bar = 0 + +# callback function for training runs +def print_progress_bar(description, iteration_counter, total_items, progress_bar_length=20): + global current_bar + global bars + global texts + global training_form + # update the form and the bars + training_form.ReadNonBlocking() + bars[current_bar].UpdateBar(iteration_counter, max=total_items) + texts[current_bar].Update(description) + if iteration_counter == total_items: + current_bar += 1 + +# redefine the chatbot text based progress bar with a graphical one chatterbot.utils.print_progress_bar = print_progress_bar chatbot = ChatBot('Ron Obvious', trainer='chatterbot.trainers.ChatterBotCorpusTrainer') @@ -21,10 +45,10 @@ chatbot = ChatBot('Ron Obvious', trainer='chatterbot.trainers.ChatterBotCorpusTr chatbot.train("chatterbot.corpus.english") ################# GUI ################# -with gui.FlexForm('Chat Window', auto_size_text=True, default_element_size=(30, 2)) as form: - layout = [ [gui.Output(size=(80, 20))], - [gui.Multiline(size=(70, 5), enter_submits=True), - gui.ReadFormButton('SEND', bind_return_key=True), gui.SimpleButton('EXIT')]] +with g.FlexForm('Chat Window', auto_size_text=True, default_element_size=(30, 2)) as form: + layout = [[g.Output(size=(80, 20))], + [g.Multiline(size=(70, 5), enter_submits=True), + g.ReadFormButton('SEND', bind_return_key=True), g.SimpleButton('EXIT')]] form.Layout(layout) # ---===--- Loop taking in user input and using it to query HowDoI web oracle --- #