0

so i have a maths program and i have the user entering 10 questions. once the ten questions are over it displays how many you got correct etc.

what i want to do is link the progress bar to the amount of questions answered so if user has done 5 questions progress will be half way then once theve done 10 start all over again. i currently have this definition here for submitting the answers

def submit(self):
    try:
        user_answer = int(self.answer_strvar.get())
    except:
        return

    if eval(self.equation) == user_answer:
        print('Correct!! The Answer Was {}'.format(user_answer))
        self.correct_counter += 1
    else:
        print('Wrong!! Your Answer was: {} = {}, The Correct answer is {}'.format(self.equation, user_answer, eval(self.equation)))

    self.submit_counter += 1
    if self.submit_counter < NUM_QUESTIONS:
        self.update_equation()
    else:
        self.show_result()

        self.submit_counter = 0
        self.correct_counter = 0

where as submit counter is the amount of answers submitted by user. that is the variable i want to link it to with that number being the percentage done and 10 being the maxximum.

i also have a progress bar like this on the main screen

pb = ttk.Progressbar(self, orient="horizontal", length=600, mode="determinate")
pb.pack()

1 Answers1

0

Use a control variable to set the value.

class TestProgress():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('ttk.Progressbar')

        self.val=tk.IntVar()
        self.val.set(0)
        self.pbar = ttk.Progressbar(self.root, length=300,
                    maximum=10, variable=self.val)
        self.pbar.pack(padx=5, pady=5)

        tk.Label(self.root, textvariable=self.val,
                 bg="lightblue").pack()

        ## wait 2 seconds & update
        self.root.after(2000, self.advance)
        self.root.mainloop()

    def advance(self):
        self.val.set(8)

TP=TestProgress()
  • that sets it to an individual progress bar by itself on a seperate frame, how do i add it to my actual frame i have in the program at the moment.?? thanks – cmarchantbullen Apr 05 '16 at 05:34
  • There is no frame in the code you posted. But it does not matter what container the ProgressBar is in. You set the ProgressBar's control variable, so you set it to the value of self.submit_counter instead of the 8 above. –  Apr 05 '16 at 17:15