Я решил попробовать написать программу, которая рассчитала бы ваши проценты жировых отложений на основе измерений, взятых из тестера жировых отложений. Я создал таблицу Excel за несколько лет назад для собеседника, чтобы он мог рассчитать процентный процент жировых отложений своих клиентов. Я подумал, что было бы здорово создать программу для его использования, и это также даст мне возможность практиковать.Tkinter GUI Window Blank
Когда я запускаю программу, она работает без каких-либо проблем, кроме того, что окно Tkinter полностью заполняется. Может ли кто-нибудь определить, что я сделал неправильно в своем коде?
Также, если я получу эту работу, есть ли в любом случае я могу создать исполняемый файл, чтобы дать моему приятелю или каким-то образом запустить рабочий стол для запуска сценария python? Он будет использовать Mac, поэтому с уже установленным python я полагаю, что есть, вероятно, какой-то способ запуска терминала, но я не знаю, как это будет сделано.
Любая помощь будет принята с благодарностью, код ниже:
__author__ = 'jared'
import tkinter
import tkinter.messagebox
import cmath
class BodyFatGUI:
def __init__(self):
#Create Main Window
self.main_window = tkinter.Tk()
#Create Frames for wigets
self.gender_frame = tkinter.Frame(self.main_window)
self.tricep_frame = tkinter.Frame(self.main_window)
self.chest_frame = tkinter.Frame(self.main_window)
self.abdominal_frame = tkinter.Frame(self.main_window)
self.suprailiac_frame = tkinter.Frame(self.main_window)
self.thigh_frame = tkinter.Frame(self.main_window)
self.button_frame = tkinter.Frame(self.main_window)
#Initialize Radio Buttons
self.radio_var = tkinter.IntVar()
self.radio_var.set(1)
#Create gender widgets
self.rb1 = tkinter.Radiobutton(self.gender_frame, text = 'Male', variable=self.radio_var, \
value = 1)
self.rb2 = tkinter.Radiobutton(self.gender_frame, text = 'Female', variable=self.radio_var, \
value = 2)
#Create age widget
self.age_label = tkinter.Label(self.gender_frame, text='Age:')
self.age_entry = tkinter.Entry(self.gender_frame, width='7')
#Create skinfold widgets
self.tricep_label = tkinter.Label(self.tricep_frame, text='Enter Tricep skinfold measurement:')
self.tricep_entry = tkinter.Entry(self.tricep_frame, width=10)
self.chest_label = tkinter.Label(self.chest_frame, text='Enter Chest skinfold measurement:')
self.chest_entry = tkinter.Entry(self.chest_frame, width=10)
self.abdominal_label = tkinter.Label(self.abdominal_frame, text = 'Enter Abdominal measurement:')
self.abdominal_entry = tkinter.Entry(self.abdominal_frame, width=10)
self.suprailiac_label = tkinter.Label(self.suprailiac_frame, text='Enter Suprailiac measurement:')
self.suprailiac_entry = tkinter.Entry(self.suprailiac_frame, width=10)
self.thigh_label = tkinter.Label(self.thigh_frame, text='Enter Thigh measurement:')
self.thigh_entry = tkinter.Entry(self.thigh_frame, width=10)
#create button frame
self.calc_button = tkinter.Button(self.button_frame, text='Calculate', command=self.bodyfat)
self.quit_button = tkinter.Button(self.button_frame, text='Quit', command=self.main_window.destroy)
#Pack the widgets
self.rb1.pack(side='left')
self.rb2.pack(side='left')
self.age_label.pack(side='right')
self.age_label.pack(side='right')
self.tricep_label.pack(side='left')
self.tricep_entry.pack(side='left')
self.chest_label.pack(side='left')
self.chest_entry.pack(side='left')
self.abdominal_label.pack(side='left')
self.abdominal_entry.pack(side='left')
self.suprailiac_label.pack(side='left')
self.suprailiac_entry.pack(side='left')
self.thigh_label.pack(side='left')
self.thigh_entry.pack(side='left')
self.calc_button.pack(side='left')
self.quit_button.pack(side='left')
tkinter.mainloop()
def bodyfat(self):
#Get value entered from user
tri = float(self.tricep_entry.get())
chest = float(self.chest_entry.get())
ab = float(self.abdominal_entry.get())
sup = float(self.suprailiac_entry.get())
thigh = float(self.thigh_entry.get())
age = float(self.age_entry.get())
sum = tri + chest + ab + sup + thigh
if self.radio_var.get() is 'Male':
bd = 1.1093800 - 0.008267*sum + 0.0000016*sum^2 - 0.0001392*age
fat = ((4.570/bd) - 4.142)*100
tkinter.messagebox.showinfo('Results', 'Your calculated body fat percentage is: ' + str(fat))
elif self.radio_var.get() is 'Female':
bd = 1.0994921 - 0.0009929*sum + 0.0000023*sum^2 - 0.0001392*age
fat = ((4.570/bd) - 4.142)*100
tkinter.messagebox.showinfo('Results', 'Your calculated body fat percentage is: ' + str(fat))
body_fat = BodyFatGUI()
вы запустите его в терминале/консоли/cmd.exe, чтобы увидеть, если нет сообщений об ошибке? – furas
, чтобы создать исполняемый файл для Mac, вы должны создать его на Mac. – furas
Я запустил его на PyCharm на Mac. Окно появилось и было пустым. Есть ли способ лучше? –