2016-04-05 9 views
0

私は数学プログラムを持っているので、ユーザーは10個の質問を入力しています。 10個の質問が終わったら、どれくらいの数字が正しいかを表示します。関数へのtkinterプログレスバーのリンク

私がしたいことは、質問の量にプログレスバーをリンクしているので、ユーザーが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が最大値である変数です。

は、私はまた、メイン画面

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

答えて

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

個別のプログレスバーにそれを別々のフレームで設定すると、現時点でプログラムにある実際のフレームにどのように追加するのですか?ありがとう – cmarchantbullen

+0

投稿したコードにフレームがありません。 ProgressBarのコントロール変数を設定しているので、上記の8の代わりにself.submit_counterの値に設定します。 –

関連する問題