2014-12-18 2 views
0

У меня есть задание, с которым у меня проблемы. Код работает, но проблема, с которой я сейчас сталкиваюсь, заключается в том, чтобы заставить его округлить, я не могу найти подходящее место для размещения «.2f». Также показаны ошибки для не использования числовых или отрицательных чисел. Любые советы высоко ценится.миль на галлон gui program python

import tkinter 

class MPG: 
    def __init__(self): 
     # create main window 
     self.main_window = tkinter.Tk() 

     # create four frames 
     self.gallons_frame = tkinter.Frame(self.main_window) 
     self.miles_frame = tkinter.Frame(self.main_window) 
     self.mpg_frame = tkinter.Frame(self.main_window) 
     self.button_frame = tkinter.Frame(self.main_window) 


     self.gallons_label = tkinter.Label(self.gallons_frame, \ 
             text='Enter the number of gallons: ') 
     self.gallons_entry = tkinter.Entry(self.gallons_frame, \ 
             width=10) 
     self.gallons_label.pack(side='left') 
     self.gallons_entry.pack(side='left') 


     self.miles_label = tkinter.Label(self.miles_frame, \ 
              text='Enter the number of miles: ') 
     self.miles_entry = tkinter.Entry(self.miles_frame, \ 
              width=10) 
     self.miles_label.pack(side='left') 
     self.miles_entry.pack(side='left') 


     self.result_label = tkinter.Label(self.mpg_frame, \ 
             text='Miles Per Gallon') 
     self.mpg = tkinter.StringVar() 
     self.mpg_label = tkinter.Label(self.mpg_frame, \ 
             textvariable=self.mpg) 
     self.result_label.pack(side='left') 
     self.mpg_label.pack(side='left') 


     self.calc_button = tkinter.Button(self.button_frame, \ 
              text='Calculate MPG', \ 
              command=self.calc_mpg) 
     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.gallons_frame.pack() 
     self.miles_frame.pack() 
     self.mpg_frame.pack() 
     self.button_frame.pack() 

    # the calc_mpg is the callback function for the calc_button 
    def calc_mpg(self): 
     # Get miles and gallons and store them in variables 
     self.gallons = float(self.gallons_entry.get()) 
     self.miles = float(self.miles_entry.get()) 

     # calculate the MPG 
     self.miles_per_gallon = self.miles/self.gallons 

     # update the mpg_label 
     self.mpg.set(str(round(self.miles_per_gallon))) 

carmpg = MPG() 
+1

Быстрый несвязанный совет: в Python вам не нужно '\', чтобы продолжить список аргументов на другой строке. – senshin

+0

Вы можете установить числовое значение с помощью 'self.mpg.set ('%. 2f'% round (self.miles_per_gallon, 2))'. – martineau

ответ

1

Попробуйте использовать встроенную функцию round. Кроме того, я думаю, вам может не хватать int для строкового вызова.

# the calc_mpg is the callback function for the calc_button 
def calc_mpg(self): 
    # Get miles and gallons and store them in variables 
    self.gallons = float(self.gallons_entry.get()) 
    self.miles = float(self.miles_entry.get()) 

    # calculate the MPG 
    self.miles_per_gallon = self.miles/self.gallons 

    # update the mpg_label 
    self.mpg.set(str(round(self.miles_per_gallon, 2))) 
+0

, что раундов в целом мне нужно 2 знака после запятой. – ct957

+0

получил его, просто добавьте 2 в качестве второго аргумента для раунда. – meyer9