2017-04-22 62 views
1

除了我的avg_frame之外的所有東西都沒有顯示出來。這只是我在使用Python的GUI程序上的第二次嘗試,所以我不確定我忘記或遺漏了什麼。這是我第一次使用StringVar(),所以也許我搞砸了?Python GUI程序 - 幀沒有顯示 - 使用StringVar()

感謝您提前提供任何幫助!

## Test score average 
# 

import tkinter 


class TestAvg: 
    def __init__(self): 
## create main window 
     self.main_window = tkinter.Tk() 
## create frames 
     self.test1_frame = tkinter.Frame(self.main_window) 
     self.test2_frame = tkinter.Frame(self.main_window) 
     self.test3_frame = tkinter.Frame(self.main_window) 
     self.avg_frame = tkinter.Frame(self.main_window) 
     self.button_frame = tkinter.Frame(self.main_window) 

## create labels 
     self.test1_label = tkinter.Label(self.test1_frame, \ 
             text="Enter the score for test 1:") 
     self.test1_entry = tkinter.Entry(self.test1_frame, \ 
             width=20) 
     self.test1_label.pack(side='left') 
     self.test1_entry.pack(side='left') 


## labels 
     self.test2_label = tkinter.Label(self.test2_frame, \ 
             text="Enter the score for test 2:") 
     self.test2_entry = tkinter.Entry(self.test2_frame, \ 
             width=20) 
     self.test2_label.pack(side='left') 
     self.test2_entry.pack(side='left') 



## labels 
     self.test3_label = tkinter.Label(self.test3_frame, \ 
             text="Enter the score for test 3:") 
     self.test3_entry = tkinter.Entry(self.test3_frame, \ 
             width=20) 
     self.test3_label.pack(side='left') 
     self.test3_entry.pack(side='left') 



     self.result_label = tkinter.Label(self.avg_frame, text="Average") 
     self.avg = tkinter.StringVar() 
     self.avg_label = tkinter.Label(self.avg_frame, \ 
             textvariable=self.avg) 
     self.result_label.pack(side='left') 
     self.avg_label.pack(side='left') 




## create buttons 
     self.calc_button = tkinter.Button(self.button_frame, \ 
              text="Average", \ 
              command=self.calc_avg) 
     self.quit_button = tkinter.Button(self.button_frame, \ 
              text="Quit", \ 
              command=self.main_window.destroy) 
     self.calc_button.pack(side='left') 
     self.quit_button.pack(side='left') 


     self.test1_frame.pack() 
     self.test2_frame.pack() 
     self.test3_frame.pack() 
     self.button_frame.pack() 

    def calc_avg(self): 
     ## Get test scores and store in variables 
     self.test1 = float(self.test1_entry.get()) 
     self.test2 = float(self.test2_entry.get()) 
     self.test3 = float(self.test3_entry.get()) 

     ## Calculate the average of the 3 test scores 
     self.test_score_avg = self.test1 + self.test2 + self.test3/3 


     ## Display the avg_label 
     self.avg.set(str(round(self.test_score_avg, 1))) 

testavg = TestAvg() 

回答

0

你錯過了線在這裏

... 
    self.test1_frame.pack() 
    self.test2_frame.pack() 
    self.test3_frame.pack() 
    self.avg_frame.pack() # this line 
    self.button_frame.pack() 
... 

同樣,計算平均是錯誤的數學行。你錯過了括號。 :)

self.test_score_avg = (self.test1 + self.test2 + self.test3)/3 
+0

我很感謝您的幫助!總是很高興有一個「第二套」的眼睛來看看在匆忙中完成的事情! – Drew1970