将tkinter进度条链接到功能

时间:2016-04-05 04:47:03

标签: python python-3.x tkinter progress-bar

所以我有一个数学课程,我让用户输入10个问题。一旦十个问题结束,它会显示你有多少正确等等。

我想要做的是将进度条链接到所回答的问题数量,这样如果用户已经完成了5个问题,那么进度将是一半,然后一旦完成10再次开始。我现在有这个定义来提交答案

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

其中,提交计数器是用户提交的答案数量。这是我要将其链接到的变量,该数字是完成的百分比,10是maxximum。

我在主屏幕上也有这样的进度条

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

1 个答案:

答案 0 :(得分:0)

使用控制变量设置值。

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()