class MyQuestion(object): def __init__(self, parent, question_text, ans1_text, ans2_text, ans3_text, ans4_text, exp1_text, exp2_text, exp3_text, exp4_text, correct_ans): # assigning parameters to attributes self.parent = parent self.qtext = str(question_text) self.text1 = str(ans1_text) self.text2 = str(ans2_text) self.text3 = str(ans3_text) self.text4 = str(ans4_text) self.exp1 = str(exp1_text) self.exp2 = str(exp2_text) self.exp3 = str(exp3_text) self.exp4 = str(exp4_text) self.ans = int(correct_ans) # creating Tkinter variables self.ans_input = IntVar() self.is_correct = BooleanVar() self.efbg = StringVar() self.is_correct_text = StringVar() self.exp_text = StringVar() # developer mode if dev: self.ans_input.set(self.ans) # questionwide bgcolor, fgcolor self.bgcolor = GrayScale(80) self.fgcolor = GrayScale(20) # creating parent frame self.parent_frame() self.question_frame() def parent_frame(self): # creating parent frame self.pf = Frame(self.parent) self.pf.configure(bg=self.bgcolor) self.pf.place(relx=0, rely=0, relwidth=1, relheight=1) def question_frame(self): # creating question frame within parent frame self.qf = Frame(self.pf) self.qf.configure(bg=self.bgcolor) self.qf.place(relx=0, rely=0, relwidth=1, relheight=1) # creating objects within question frame self.title_label() self.radiobutton1() self.radiobutton2() self.radiobutton3() self.radiobutton4() self.check_ans_button() def explanation_frame(self): # creating explanation frame within parent frame self.ef = Frame(self.pf) self.ef.configure(bg=self.efbg.get()) self.ef.place(relx=0, rely=0, relwidth=1, relheight=1) # creating objects within explanation frame self.is_correct_label() self.exp_label() self.next_ques_button() # creating display answer button if answer is wrong if not self.is_correct.get(): self.disp_ans_button() def title_label(self): # creating title label for question frame self.tl = Label(self.qf) self.tl.configure(text=self.qtext) self.tl.configure(font=MyFonts['ExtraLarge']) self.tl.configure(bg=self.bgcolor, fg=self.fgcolor) self.tl.configure(relief=FLAT) self.tl.configure(padx=2, pady=2, anchor=N) self.tl.place(relx=0.05, rely=0.05, relwidth=0.90, relheight=0.10) def radiobutton1(self): # creating radiobuttion1 for question frame self.q1 = Radiobutton(self.qf) self.q1.configure(text='A. ' + self.text1) self.q1.configure(font=MyFonts['Large']) self.q1.configure(bg=self.bgcolor, activebackground=self.bgcolor) self.q1.configure(variable=self.ans_input, value=1) self.q1.place(relx=0.10, rely=0.20) def radiobutton2(self): # creating radiobutton2 for question frame self.q2 = Radiobutton(self.qf) self.q2.configure(text='B. ' + self.text2) self.q2.configure(font=MyFonts['Large']) self.q2.configure(bg=self.bgcolor, activebackground=self.bgcolor) self.q2.configure(variable=self.ans_input, value=2) self.q2.place(relx=0.10, rely=0.35) def radiobutton3(self): # creating radiobutton3 for question frame self.q3 = Radiobutton(self.qf) self.q3.configure(text='C. ' + self.text3) self.q3.configure(font=MyFonts['Large']) self.q3.configure(bg=self.bgcolor, activebackground=self.bgcolor) self.q3.configure(variable=self.ans_input, value=3) self.q3.place(relx=0.10, rely=0.50) def radiobutton4(self): # creating radiobutton4 for question frame self.q4 = Radiobutton(self.qf) self.q4.configure(text='D. ' + self.text4) self.q4.configure(font=MyFonts['Large']) self.q4.configure(bg=self.bgcolor, activebackground=self.bgcolor) self.q4.configure(variable=self.ans_input, value=4) self.q4.place(relx=0.10, rely=0.65) def check_ans_button(self): # creating check answer button for question frame self.cb = MyButton(self.qf, 'Check Answer', self.check_ans, 0.80, 0.85) def is_correct_label(self): # creating is_correct_label for explanation frame self.cl = Label(self.ef) self.cl.configure(text=self.is_correct_text.get()) self.cl.configure(font=MyFonts['ExtraLargeBold']) self.cl.configure(bg=self.efbg.get(), fg=GrayScale(20)) self.cl.configure(relief=FLAT) self.cl.configure(padx=2, pady=2, anchor=N) self.cl.place(relx=0.05, rely=0.05, relwidth=0.90, relheight=0.05) def exp_label(self): # creating exp_label for explanation frame self.el = Label(self.ef) self.el.configure(text=self.exp_text.get()) self.el.configure(font=MyFonts['LargeBold']) self.el.configure(bg=self.efbg.get(), fg=GrayScale(20)) self.el.configure(relief=FLAT) self.el.configure(padx=2, pady=2, anchor=N) self.el.place(relx=0.05, rely=0.10, relwidth=0.90, relheight=0.85) def next_ques_button(self): # creating next question button for explanation frame self.nq = MyButton(self.ef, 'Next Question', self.next_ques, 0.80, 0.85) def disp_ans_button(self): # creating display answer button for explanation frame self.da = MyButton(self.ef, 'Show Answer', self.disp_ans, 0.65, 0.85) def assign_all(self): # assigning correct answer text (ans_text) and explanation attributes (ans_exp) if self.ans == 1: self.ans_text = 'A. ' + self.text1 self.ans_exp = self.exp1 elif self.ans == 2: self.ans_text = 'B. ' + self.text2 self.ans_exp = self.exp2 elif self.ans == 3: self.ans_text = 'C. ' + self.text3 self.ans_exp = self.exp3 elif self.ans == 4: self.ans_text = 'D. ' + self.text4 self.ans_exp = self.exp4 else: self.ans_text = 'invalid correct_ans parameter' self.ans_exp = 'invalid correct_ans parameter' print 'invalid correct_ans parameter, please input between 1 and 4' def check_ans(self): # defining check answer function # is_correct (Boolean conditional) if self.ans_input.get() == self.ans: self.efbg.set(color_green) self.is_correct.set(True) self.is_correct_text.set('Correct Answer! :)') else: self.efbg.set(color_red) self.is_correct.set(False) self.is_correct_text.set('Wrong Answer :(') # only assign values for show answer if user answer is wrong self.assign_all() # appropriate response to selected answer if self.ans_input.get() == 1: self.exp_text.set(self.exp1) self.explanation_frame() self.qf.destroy() elif self.ans_input.get() == 2: self.exp_text.set(self.exp2) self.explanation_frame() self.qf.destroy() elif self.ans_input.get() == 3: self.exp_text.set(self.exp3) self.explanation_frame() self.qf.destroy() elif self.ans_input.get() == 4: self.exp_text.set(self.exp4) self.explanation_frame() self.qf.destroy() else: # no selected answer condition showerror('Error', 'Please select an answer to continue') def disp_ans(self): # defining display answer function tmp_str = self.ans_exp[0].lower() + self.ans_exp[1:] disp_ans_text = 'The correct answer is "' + str( self.ans_text) + '" because ' + str(tmp_str) showinfo('Correct Answer', disp_ans_text) def next_ques(self): # defininf next_question function self.pf.destroy() self.ef.destroy()
class CHEOBCMAKiosk: def __init__(self, top=None): ' "It is a good habit, when building any type of GUI component, to keep a reference to our parent" ' self.top = top top.geometry("600x450+525+240") top.title("CHEO BCMA KIOSK") top.configure(background="#d9d9d9") top.configure(highlightbackground="#d9d9d9") top.configure(highlightcolor="black") '''------------------------------------------------------------------------------------------------------ Begin Build Text Box ''' self.TextBox = Text(top) self.TextBox.place(relx=0.2, rely=0.15, relheight=0.34, relwidth=0.64) self.TextBox.configure(background="white") self.TextBox.configure(borderwidth="2") self.TextBox.configure(highlightbackground="#d9d9d9") self.TextBox.configure(highlightcolor="black") self.TextBox.configure(relief=RIDGE) self.TextBox.configure(takefocus="no") ' Bind mouse clicks ' self.TextBox.bind("<Button-1>", self.textbox_text) self.TextBox.bind("<Button-2>", self.textbox_text) self.TextBox.bind("<Button-3>", self.textbox_text) ' Initial value ' self.TextBox.insert(END, "This is the initial text.") ' Disable content from user entry ' self.TextBox.config(state=DISABLED) self.LabelTitle = Label(top) self.LabelTitle.place(relx=0.03, rely=0.03, height=19, width=311) self.LabelTitle.configure(activebackground="#f9f9f9") self.LabelTitle.configure(activeforeground="black") self.LabelTitle.configure(background="#d9d9d9") self.LabelTitle.configure(disabledforeground="#a3a3a3") self.LabelTitle.configure(foreground="#000000") self.LabelTitle.configure(highlightbackground="#d9d9d9") self.LabelTitle.configure(highlightcolor="black") self.LabelTitle.configure( text= '''Welcome to the CHEO self-serve BCMA employee barcode kiosk''') ''' End Build Canvas ------------------------------------------------------------------------------------------------------''' ''' Build Buttons ------------------------------------------------------------------------------------------------------''' # Print Button self.ButtonPrint = Button(top) self.ButtonPrint.configure(command=self.printBut) self.ButtonPrint.place(relx=0.42, rely=0.89, height=21, width=31) self.ButtonPrint.configure(text='''Print''') self.ButtonPrint.configure(underline="0") self.ButtonPrint.configure(default='active') self.ButtonPrint.configure(takefocus='Yes') # Close Button self.ButtonClose = Button(top) self.ButtonClose.configure(command=quit) self.ButtonClose.place(relx=0.55, rely=0.89, height=21, width=35) self.ButtonClose.configure(activebackground="#d9d9d9") self.ButtonClose.configure(activeforeground="#000000") self.ButtonClose.configure(background="#d9d9d9") self.ButtonClose.configure(disabledforeground="#a3a3a3") self.ButtonClose.configure(foreground="#000000") self.ButtonClose.configure(highlightbackground="#d9d9d9") self.ButtonClose.configure(highlightcolor="black") self.ButtonClose.configure(pady="0") self.ButtonClose.configure(text='''Close''') self.ButtonClose.configure(underline="0") ''' End Build Buttons ------------------------------------------------------------------------------------------------------''' ''' Begin Build Radio Group ------------------------------------------------------------------------------------------------------''' # Default Radio Button Source to TAP self.input_source = StringVar() self.input_source.set('TAP') # Tap Data Entry Radio self.rdo_TAP = Radiobutton(top) self.rdo_TAP.place(relx=0.8, rely=0.82, relheight=0.05, relwidth=0.14) self.rdo_TAP.configure(activebackground="#d9d9d9") self.rdo_TAP.configure(activeforeground="#000000") self.rdo_TAP.configure(background="#d9d9d9") self.rdo_TAP.configure(disabledforeground="#a3a3a3") self.rdo_TAP.configure(foreground="#000000") self.rdo_TAP.configure(highlightbackground="#d9d9d9") self.rdo_TAP.configure(highlightcolor="black") self.rdo_TAP.configure(justify=LEFT) self.rdo_TAP.configure(text='Tap Reader') self.rdo_TAP.configure(underline="0") self.rdo_TAP.configure(value='TAP') self.rdo_TAP.configure(variable=self.input_source) self.rdo_TAP.configure(command=self.radio_toggle) # Manual Data Entry Radio self.rdo_MAN = Radiobutton(top) self.rdo_MAN.place(relx=0.8, rely=0.89, relheight=0.05, relwidth=0.15) self.rdo_MAN.configure(activebackground="#d9d9d9") self.rdo_MAN.configure(activeforeground="#000000") self.rdo_MAN.configure(background="#d9d9d9") self.rdo_MAN.configure(disabledforeground="#a3a3a3") self.rdo_MAN.configure(foreground="#000000") self.rdo_MAN.configure(highlightbackground="#d9d9d9") self.rdo_MAN.configure(highlightcolor="black") self.rdo_MAN.configure(justify=LEFT) self.rdo_MAN.configure(text='Manual Entry') self.rdo_MAN.configure(underline="0") self.rdo_MAN.configure(value="MAN") self.rdo_MAN.configure(variable=self.input_source) self.rdo_MAN.configure(command=self.radio_toggle) ''' End Build Radio Group ------------------------------------------------------------------------------------------------------''' ''' Begin Fixed Labels ------------------------------------------------------------------------------------------------------''' # Last Name self.LabelLastName = Label(top) self.LabelLastName.place(relx=0.1, rely=0.56, height=19, width=56) self.LabelLastName.configure(activebackground="#f9f9f9") self.LabelLastName.configure(activeforeground="black") self.LabelLastName.configure(background="#d9d9d9") self.LabelLastName.configure(disabledforeground="#a3a3a3") self.LabelLastName.configure(foreground="#000000") self.LabelLastName.configure(highlightbackground="#d9d9d9") self.LabelLastName.configure(highlightcolor="black") self.LabelLastName.configure(text='''Last Name''') # First Name self.LabelFirstName = Label(top) self.LabelFirstName.place(relx=0.1, rely=0.62, height=19, width=57) self.LabelFirstName.configure(activebackground="#f9f9f9") self.LabelFirstName.configure(activeforeground="black") self.LabelFirstName.configure(background="#d9d9d9") self.LabelFirstName.configure(disabledforeground="#a3a3a3") self.LabelFirstName.configure(foreground="#000000") self.LabelFirstName.configure(highlightbackground="#d9d9d9") self.LabelFirstName.configure(highlightcolor="black") self.LabelFirstName.configure(text='''First Name''') # AD User Name self.LabelADUserName = Label(top) self.LabelADUserName.place(relx=0.07, rely=0.69, height=19, width=75) self.LabelADUserName.configure(activebackground="#f9f9f9") self.LabelADUserName.configure(activeforeground="black") self.LabelADUserName.configure(background="#d9d9d9") self.LabelADUserName.configure(disabledforeground="#a3a3a3") self.LabelADUserName.configure(foreground="#000000") self.LabelADUserName.configure(highlightbackground="#d9d9d9") self.LabelADUserName.configure(highlightcolor="black") self.LabelADUserName.configure(text='''AD User Name''') # AD Password self.LabelADPassword = Label(top) self.LabelADPassword.place(relx=0.08, rely=0.76, height=19, width=70) self.LabelADPassword.configure(activebackground="#f9f9f9") self.LabelADPassword.configure(activeforeground="black") self.LabelADPassword.configure(background="#d9d9d9") self.LabelADPassword.configure(disabledforeground="#a3a3a3") self.LabelADPassword.configure(foreground="#000000") self.LabelADPassword.configure(highlightbackground="#d9d9d9") self.LabelADPassword.configure(highlightcolor="black") self.LabelADPassword.configure(text='''AD Password''') ''' End Fixed Labels ------------------------------------------------------------------------------------------------------''' ''' Begin Data Entry ------------------------------------------------------------------------------------------------------''' # Last Name self.EntryLastName = Entry(top) self.EntryLastName.place(relx=0.2, rely=0.56, relheight=0.04, relwidth=0.34) self.EntryLastName.configure(background="white") self.EntryLastName.configure(disabledforeground="#a3a3a3") self.EntryLastName.configure(font="TkFixedFont") self.EntryLastName.configure(foreground="#000000") self.EntryLastName.configure(highlightbackground="#d9d9d9") self.EntryLastName.configure(highlightcolor="black") self.EntryLastName.configure(insertbackground="black") self.EntryLastName.configure(selectbackground="#c4c4c4") self.EntryLastName.configure(selectforeground="black") ' Bind mouse clicks ' self.EntryLastName.bind("<Button-1>", self.lastname_text) self.EntryLastName.bind("<Button-2>", self.lastname_text) self.EntryLastName.bind("<Button-3>", self.lastname_text) 'self.EntryLastName.configure(state=readonly)' ' First Name ' self.EntryFirstName = Entry(top) self.EntryFirstName.place(relx=0.2, rely=0.62, relheight=0.04, relwidth=0.34) self.EntryFirstName.configure(background="white") self.EntryFirstName.configure(disabledforeground="#a3a3a3") self.EntryFirstName.configure(font="TkFixedFont") self.EntryFirstName.configure(foreground="#000000") self.EntryFirstName.configure(highlightbackground="#d9d9d9") self.EntryFirstName.configure(highlightcolor="black") self.EntryFirstName.configure(insertbackground="black") self.EntryFirstName.configure(selectbackground="#c4c4c4") self.EntryFirstName.configure(selectforeground="black") '''self.EntryFirstName.configure(label="Hi There") readonly = 'readonly' self.EntryFirstName.configure(state=readonly)''' ' AD User Name ' self.EntryADUserName = Entry(top) self.EntryADUserName.place(relx=0.2, rely=0.69, relheight=0.04, relwidth=0.34) self.EntryADUserName.configure(background="white") self.EntryADUserName.configure(disabledforeground="#a3a3a3") self.EntryADUserName.configure(font="TkFixedFont") self.EntryADUserName.configure(foreground="#000000") self.EntryADUserName.configure(highlightbackground="#d9d9d9") self.EntryADUserName.configure(highlightcolor="black") self.EntryADUserName.configure(insertbackground="black") self.EntryADUserName.configure(selectbackground="#c4c4c4") self.EntryADUserName.configure(selectforeground="black") readonly = 'readonly' self.EntryADUserName.configure(state=readonly) ' Data Payload ' self.EntryADPassword = Entry(top) self.EntryADPassword.place(relx=0.2, rely=0.76, relheight=0.04, relwidth=0.34) self.EntryADPassword.configure(background="white") self.EntryADPassword.configure(disabledforeground="#a3a3a3") self.EntryADPassword.configure(font="TkFixedFont") self.EntryADPassword.configure(foreground="#000000") self.EntryADPassword.configure(highlightbackground="#d9d9d9") self.EntryADPassword.configure(highlightcolor="black") self.EntryADPassword.configure(insertbackground="black") self.EntryADPassword.configure(selectbackground="#c4c4c4") self.EntryADPassword.configure(selectforeground="black") '''readonly = 'readonly' self.EntryADPassword.configure(state=readonly)''' ''' End Data Entry Fields ------------------------------------------------------------------------------------------------------''' ''' Begin Status Bar ------------------------------------------------------------------------------------------------------''' # Create a sunken status bar in the root object with a border self.status_text = StringVar() # Displays live status self.status_text.set("Hello") self.status = Label(root, textvariable=self.status_text, bd=1, relief=SUNKEN, anchor=W) # anchor to the West (Left) self.status.pack(side=BOTTOM, fill=X) # display ''' End Status Bar ------------------------------------------------------------------------------------------------------''' ' Print Button Function' def printBut(self): ' Instantiate ZPLII Class ' ' ??? @@@ ' print('Print button has been pressed') print('Current values... ' + str(self.EntryFirstName)) self.status = "Q" # self.input_source.set(_self.input_source.Get) def radio_toggle(self): ' @@@ ' selection = self.input_source.get() print('Radio button is ' + selection) self.status_text.set("Radio toggled to " + selection) def textbox_text(self, event): print('Text Box Event - ' + str(event)) ' Enable before insert ' if self.TextBox["state"] == DISABLED: self.TextBox.config(state=NORMAL) self.TextBox.insert(END, "\nMouse click in TextBox") ' Disable after insert ' self.TextBox.config(state=DISABLED) def lastname_text(self, event): print('LastName Entry Event - ' + str(event)) ' Enable before insert ' if self.TextBox["state"] == DISABLED: self.TextBox.config(state=NORMAL) self.TextBox.insert(END, "\nMouse click in Last Name field") ' Disable after insert ' self.TextBox.config(state=DISABLED) ' Update status depending on which button pressed ' if event.num == 1: self.status_text.set("Left button clicked") elif event.num == 2: self.status_text.set("Middle button clicked") elif event.num == 3: self.status_text.set("Right button clicked") else: self.status_text.set("*** The " + str(event.num) + " button pressed ***")
class _Hatch_GUI(object): """ create a Hatch object from hatch_supt and to then create a skeleton python project. """ def __init__(self, master): self.initComplete = 0 self.master = master self.x, self.y, self.w, self.h = -1, -1, -1, -1 # bind master to <Configure> in order to handle any resizing, etc. # postpone self.master.bind("<Configure>", self.Master_Configure) self.master.bind('<Enter>', self.bindConfigure) self.master.title("PyHatch GUI") self.master.resizable(0, 0) # Linux may not respect this dialogframe = Frame(master, width=810, height=630) dialogframe.pack() self.Shortdesc_Labelframe = LabelFrame( dialogframe, text="Short Description (1-liner)", height="90", width="718") self.Shortdesc_Labelframe.place(x=60, y=127) helv20 = tkFont.Font(family='Helvetica', size=20, weight='bold') self.Buildproject_Button = Button(dialogframe, text="Build Project", width="15", font=helv20) self.Buildproject_Button.place(x=492, y=10, width=263, height=68) self.Buildproject_Button.bind("<ButtonRelease-1>", self.Buildproject_Button_Click) self.Selectdir_Button = Button(dialogframe, text="<Select Directory>", width="15") self.Selectdir_Button.place(x=72, y=585, width=672, height=31) self.Selectdir_Button.bind("<ButtonRelease-1>", self.Selectdir_Button_Click) self.Author_Entry = Entry(dialogframe, width="15") self.Author_Entry.place(x=228, y=424, width=187, height=21) self.Author_Entry_StringVar = StringVar() self.Author_Entry.configure(textvariable=self.Author_Entry_StringVar) self.Author_Entry_StringVar.set("John Doe") self.Classname_Entry = Entry(dialogframe, width="15") self.Classname_Entry.place(x=192, y=73, width=165, height=21) self.Classname_Entry_StringVar = StringVar() self.Classname_Entry.configure( textvariable=self.Classname_Entry_StringVar) self.Classname_Entry_StringVar.set("MyClass") self.Copyright_Entry = Entry(dialogframe, width="15") self.Copyright_Entry.place(x=228, y=478, width=461, height=21) self.Copyright_Entry_StringVar = StringVar() self.Copyright_Entry.configure( textvariable=self.Copyright_Entry_StringVar) self.Copyright_Entry_StringVar.set("Copyright (c) 2013 John Doe") self.Email_Entry = Entry(dialogframe, relief="sunken", width="15") self.Email_Entry.place(x=228, y=505, width=458, height=21) self.Email_Entry_StringVar = StringVar() self.Email_Entry.configure(textvariable=self.Email_Entry_StringVar) self.Email_Entry_StringVar.set("*****@*****.**") self.GithubUserName_Entry = Entry(dialogframe, relief="sunken", width="15") self.GithubUserName_Entry.place(x=228, y=539, width=458, height=21) self.GithubUserName_Entry_StringVar = StringVar() self.GithubUserName_Entry.configure( textvariable=self.GithubUserName_Entry_StringVar) self.GithubUserName_Entry_StringVar.set("github_user_name") self.Funcname_Entry = Entry(dialogframe, width="15") self.Funcname_Entry.place(x=192, y=100, width=157, height=21) self.Funcname_Entry_StringVar = StringVar() self.Funcname_Entry.configure( textvariable=self.Funcname_Entry_StringVar) self.Funcname_Entry_StringVar.set("my_function") # License values should be correct format LICENSE_OPTIONS = tuple(sorted(CLASSIFIER_D.keys())) self.License_Entry_StringVar = StringVar() self.License_Entry = OptionMenu(dialogframe, self.License_Entry_StringVar, *LICENSE_OPTIONS) self.License_Entry.place(x=552, y=424, width=184, height=21) self.License_Entry_StringVar.set(LICENSE_OPTIONS[0]) self.Mainpyname_Entry = Entry(dialogframe, width="15") self.Mainpyname_Entry.place(x=168, y=37, width=196, height=21) self.Mainpyname_Entry_StringVar = StringVar() self.Mainpyname_Entry.configure( textvariable=self.Mainpyname_Entry_StringVar) self.Mainpyname_Entry_StringVar.set("main.py") self.Projname_Entry = Entry(dialogframe, width="15") self.Projname_Entry.place(x=168, y=10, width=194, height=21) self.Projname_Entry_StringVar = StringVar() self.Projname_Entry.configure( textvariable=self.Projname_Entry_StringVar) self.Projname_Entry_StringVar.set("MyProject") self.Shortdesc_Entry = Entry(dialogframe, width="15") self.Shortdesc_Entry.place(x=72, y=150, width=688, height=48) self.Shortdesc_Entry_StringVar = StringVar() self.Shortdesc_Entry.configure( textvariable=self.Shortdesc_Entry_StringVar) self.Shortdesc_Entry_StringVar.set("My project does this") # Status must be correct format self.Status_Entry_StringVar = StringVar() self.Status_Entry = OptionMenu(dialogframe, self.Status_Entry_StringVar, *DEV_STATUS_OPTIONS) self.Status_Entry.place(x=228, y=451, width=183, height=21) self.Status_Entry_StringVar.set(DEV_STATUS_OPTIONS[0]) self.Version_Entry = Entry(dialogframe, width="15") self.Version_Entry.place(x=552, y=451, width=184, height=21) self.Version_Entry_StringVar = StringVar() self.Version_Entry.configure(textvariable=self.Version_Entry_StringVar) self.Version_Entry_StringVar.set("0.1.1") self.Author_Label = Label(dialogframe, text="Author", width="15") self.Author_Label.place(x=96, y=424, width=112, height=22) self.Classname_Label = Label(dialogframe, text="Class Name", width="15") self.Classname_Label.place(x=60, y=73, width=112, height=22) self.Copyright_Label = Label(dialogframe, text="Copyright", width="15") self.Copyright_Label.place(x=96, y=478, width=113, height=23) self.Email_Label = Label(dialogframe, text="Email", width="15") self.Email_Label.place(x=96, y=505, width=113, height=23) self.GithubUserName_Label = Label(dialogframe, text="GithubUserName", width="15") self.GithubUserName_Label.place(x=96, y=539, width=113, height=23) self.Funcname_Label = Label(dialogframe, text="Function Name", width="15") self.Funcname_Label.place(x=60, y=100, width=112, height=22) self.License_Label = Label(dialogframe, text="License", width="15") self.License_Label.place(x=432, y=424, width=113, height=23) self.Longdesc_Label = Label(dialogframe, text="Paragraph Description", width="15") self.Longdesc_Label.place(x=216, y=220, width=376, height=22) self.Mainpyname_Label = Label(dialogframe, text="Main Python File", width="15") self.Mainpyname_Label.place(x=48, y=37, width=112, height=22) self.Projname_Label = Label(dialogframe, text="Project Name", width="15") self.Projname_Label.place(x=48, y=10, width=112, height=22) self.Selectdir_Label = Label( dialogframe, text="Select the Directory Below Which to Place Your Project", width="15") self.Selectdir_Label.place(x=156, y=567, width=536, height=24) self.Status_Label = Label(dialogframe, text="Status", width="15") self.Status_Label.place(x=96, y=451, width=114, height=24) self.Version_Label = Label(dialogframe, text="Version", width="15") self.Version_Label.place(x=432, y=451, width=113, height=23) self.Isclass_Radiobutton = Radiobutton(dialogframe, text="Class Project", value="Class Project", width="15", anchor=W) self.Isclass_Radiobutton.place(x=320, y=73, width=135, height=27) self.RadioGroup1_StringVar = StringVar() self.RadioGroup1_StringVar.set("Class Project") self.RadioGroup1_StringVar_traceName = \ self.RadioGroup1_StringVar.trace_variable("w", self.RadioGroup1_StringVar_Callback) self.Isclass_Radiobutton.configure(variable=self.RadioGroup1_StringVar) self.Isfunction_Radiobutton = Radiobutton(dialogframe, text="Function Project", value="Function Project", width="15", anchor=W) self.Isfunction_Radiobutton.place(x=320, y=100, width=135, height=27) self.Isfunction_Radiobutton.configure( variable=self.RadioGroup1_StringVar) lbframe = Frame(dialogframe) self.Text_1_frame = lbframe scrollbar = Scrollbar(lbframe, orient=VERTICAL) self.Text_1 = Text(lbframe, width="40", height="6", yscrollcommand=scrollbar.set) scrollbar.config(command=self.Text_1.yview) scrollbar.pack(side=RIGHT, fill=Y) self.Text_1.pack(side=LEFT, fill=BOTH, expand=1) self.Text_1_frame.place(x=72, y=250, width=665, height=160) # >>>>>>insert any user code below this comment for section "top_of_init" self.dirname = '<Select Directory>' self.Funcname_Entry.config(state=DISABLED) h = Hatch(projName='MyProject', mainDefinesClass='N') if h.author: self.Author_Entry_StringVar.set(h.author) if h.proj_license: self.License_Entry_StringVar.set(h.proj_license) if h.proj_copyright: self.Copyright_Entry_StringVar.set(h.proj_copyright) if h.email: self.Email_Entry_StringVar.set(h.email) if h.github_user_name: self.GithubUserName_Entry_StringVar.set(h.github_user_name) del h def build_result_dict(self): """Takes user inputs from GUI and builds a dictionary of results""" # pylint: disable=W0201 self.result = {} # return a dictionary of results self.result["author"] = self.Author_Entry_StringVar.get() self.result["status"] = self.Status_Entry_StringVar.get() self.result["proj_license"] = self.License_Entry_StringVar.get() self.result["version"] = self.Version_Entry_StringVar.get() self.result["proj_copyright"] = self.Copyright_Entry_StringVar.get() self.result["email"] = self.Email_Entry_StringVar.get() self.result[ "github_user_name"] = self.GithubUserName_Entry_StringVar.get() self.result["main_py_name"] = self.Mainpyname_Entry_StringVar.get() self.result["proj_name"] = self.Projname_Entry_StringVar.get() self.result["class_name"] = self.Classname_Entry_StringVar.get() self.result["func_name"] = self.Funcname_Entry_StringVar.get() self.result["short_desc"] = self.Shortdesc_Entry_StringVar.get() self.result["para_desc"] = self.Text_1.get(1.0, END) self.result["parent_dir"] = self.dirname if self.RadioGroup1_StringVar.get() == "Class Project": self.result["is_class_project"] = 'Y' else: self.result["is_class_project"] = 'N' def Buildproject_Button_Click(self, event): """When clicked, this method gathers all the user inputs and builds the project skeleton in the directory specified. """ # tkinter requires arguments, but I don't use them # pylint: disable=W0613 # >>>>>>insert any user code below this comment for section "compID=29" # replace, delete, or comment-out the following #print "executed method Buildproject_Button_Click" if not os.path.isdir(self.dirname): ShowError( title='Need Parent Directory', message= 'You need to choose a directory in which to place your project.' ) else: self.build_result_dict() # builds self.result dict r = self.result h = Hatch(projName=r["proj_name"], mainDefinesClass=r["is_class_project"], mainPyFileName=r["main_py_name"], mainClassName=r["class_name"], mainFunctionName=r["func_name"], author=r["author"], proj_copyright=r["proj_copyright"], proj_license=r["proj_license"], version=r["version"], email=r["email"], status=r["status"], github_user_name=r["github_user_name"], simpleDesc=r["short_desc"], longDesc=r["para_desc"]) call_result = h.save_project_below_this_dir(self.dirname) if call_result == 'Success': if AskYesNo(title='Exit Dialog', message='Do you want to leave this GUI?'): self.master.destroy() else: ShowWarning( title='Project Build Error', message='Project did NOT build properly.\n'+\ 'Warning Message = (%s)'%call_result) # return a string containing directory name def AskDirectory(self, title='Choose Directory', initialdir="."): """Simply wraps the tkinter function of the "same" name.""" dirname = tkFileDialog.askdirectory(parent=self.master, initialdir=initialdir, title=title) return dirname # <-- string def Selectdir_Button_Click(self, event): # I don't care what the exception is, if there's a problem, bail # Also, I want to redefine the dirname attribute here # pylint: disable=W0702, W0201 # tkinter requires arguments, but I don't use them # pylint: disable=W0613 """Selects the directory in which to build project.""" dirname = self.AskDirectory(title='Choose Directory For Nose Tests', initialdir='.') if dirname: try: dirname = os.path.abspath(dirname) except: self.dirname = '<Select Directory>' return # let Alarm force dir selection self.dirname = dirname self.Selectdir_Button.config(text=self.dirname) def RadioGroup1_StringVar_Callback(self, varName, index, mode): # tkinter requires arguments, but I don't use them # pylint: disable=W0613 """Responds to changes in RadioGroup1_StringVar.""" if self.RadioGroup1_StringVar.get() == "Class Project": self.Funcname_Entry.config(state=DISABLED) self.Classname_Entry.config(state=NORMAL) else: self.Classname_Entry.config(state=DISABLED) self.Funcname_Entry.config(state=NORMAL) # tk_happy generated code. DO NOT EDIT THE FOLLOWING. section "Master_Configure" def bindConfigure(self, event): """bindConfigure and Master_Configure help stabilize GUI""" # tkinter requires arguments, but I don't use them # pylint: disable=W0613 if not self.initComplete: self.master.bind("<Configure>", self.Master_Configure) self.initComplete = 1 def Master_Configure(self, event): """bindConfigure and Master_Configure help stabilize GUI""" # >>>>>>insert any user code below this comment for section "Master_Configure" # replace, delete, or comment-out the following if event.widget != self.master: if self.w != -1: return x = int(self.master.winfo_x()) y = int(self.master.winfo_y()) w = int(self.master.winfo_width()) h = int(self.master.winfo_height()) if (self.x, self.y, self.w, self.h) == (-1, -1, -1, -1): self.x, self.y, self.w, self.h = x, y, w, h if self.w != w or self.h != h: print "Master reconfigured... make resize adjustments" self.w = w self.h = h
class Tool_Path_Generator: def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#e6e6e6' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' font11 = "-size 15 -weight normal -slant roman " \ "-underline 0 -overstrike 0" self.axial_length = DoubleVar() self.printbed_diameter = DoubleVar() self.final_diameter = DoubleVar() self.filament_width_og = DoubleVar() self.helix_angle = DoubleVar() self.smear_factor = DoubleVar() self.flow_rate = DoubleVar() self.uv_offset = DoubleVar() self.use_strong_pattern = BooleanVar() self.axial_length.set(200.0) self.printbed_diameter.set(10.0) self.final_diameter.set(15.0) self.filament_width_og.set(0.41) self.helix_angle.set(45.0) self.smear_factor.set(100.0) self.flow_rate.set(0.0015) self.uv_offset.set(32.5) self.use_strong_pattern.set(True) top.geometry("700x550") top.title("SkelePrint Tool Path Generator") top.configure(background="#e6e6e6") top.configure(highlightbackground="#e6e6e6") top.configure(highlightcolor="black") self.Label7 = Label(top) self.Label7.grid(row=0, column=0, sticky=W) self.Label7.configure(background="#e6e6e6") self.Label7.configure(font=font11) self.Label7.configure(foreground="#000000") self.Label7.configure(text='''SkelePrint Tool Path Generator''') self.Labelframe1 = LabelFrame(top) self.Labelframe1.grid(row=1, column=0, sticky=N+S) self.Labelframe1.configure(relief=GROOVE) self.Labelframe1.configure(foreground="black") self.Labelframe1.configure(text='''Dimensions''') self.Labelframe1.configure(background="#e6e6e6") self.Labelframe1.configure(highlightbackground="#e6e6e6") self.Labelframe1.configure(highlightcolor="black") self.axial_length_entry = Entry(self.Labelframe1) self.axial_length_entry.grid(row=0, column=1) self.axial_length_entry.configure(background="white") self.axial_length_entry.configure(font="TkFixedFont") self.axial_length_entry.configure(foreground="#000000") self.axial_length_entry.configure(highlightbackground="#e6e6e6") self.axial_length_entry.configure(highlightcolor="black") self.axial_length_entry.configure(insertbackground="black") self.axial_length_entry.configure(selectbackground="#c4c4c4") self.axial_length_entry.configure(selectforeground="black") self.axial_length_entry.configure(textvariable=self.axial_length) self.Label1 = Label(self.Labelframe1) self.Label1.grid(row=0, column=0, sticky=E) self.Label1.configure(activebackground="#e6e6e6") self.Label1.configure(activeforeground="black") self.Label1.configure(background="#e6e6e6") self.Label1.configure(foreground="#000000") self.Label1.configure(highlightbackground="#e6e6e6") self.Label1.configure(highlightcolor="black") self.Label1.configure(text='''Axial Length''') self.Label2 = Label(self.Labelframe1) self.Label2.grid(row=0, column=2, sticky=W) self.Label2.configure(activebackground="#e6e6e6") self.Label2.configure(activeforeground="black") self.Label2.configure(background="#e6e6e6") self.Label2.configure(disabledforeground="#e6e6e6") self.Label2.configure(foreground="#000000") self.Label2.configure(highlightbackground="#e6e6e6") self.Label2.configure(highlightcolor="black") self.Label2.configure(text='''mm''') self.Label3 = Label(self.Labelframe1) self.Label3.grid(row=1, column=0, sticky=E) self.Label3.configure(activebackground="#e6e6e6") self.Label3.configure(activeforeground="black") self.Label3.configure(background="#e6e6e6") self.Label3.configure(foreground="#000000") self.Label3.configure(highlightbackground="#e6e6e6") self.Label3.configure(highlightcolor="black") self.Label3.configure(text='''Printbed Diameter''') self.Entry2 = Entry(self.Labelframe1) self.Entry2.grid(row=1, column=1) self.Entry2.configure(background="white") self.Entry2.configure(font="TkFixedFont") self.Entry2.configure(foreground="#000000") self.Entry2.configure(highlightbackground="#e6e6e6") self.Entry2.configure(highlightcolor="black") self.Entry2.configure(insertbackground="black") self.Entry2.configure(selectbackground="#c4c4c4") self.Entry2.configure(selectforeground="black") self.Entry2.configure(textvariable=self.printbed_diameter) self.Label4 = Label(self.Labelframe1) self.Label4.grid(row=1, column=2, sticky=W) self.Label4.configure(activebackground="#e6e6e6") self.Label4.configure(activeforeground="black") self.Label4.configure(background="#e6e6e6") self.Label4.configure(foreground="#000000") self.Label4.configure(highlightbackground="#e6e6e6") self.Label4.configure(highlightcolor="black") self.Label4.configure(text='''mm''') self.Label5 = Label(self.Labelframe1) self.Label5.grid(row=2, column=0, sticky=E) self.Label5.configure(activebackground="#e6e6e6") self.Label5.configure(activeforeground="black") self.Label5.configure(background="#e6e6e6") self.Label5.configure(foreground="#000000") self.Label5.configure(highlightbackground="#e6e6e6") self.Label5.configure(highlightcolor="black") self.Label5.configure(text='''Final Print Diameter''') self.final_diameter_entry = Entry(self.Labelframe1) self.final_diameter_entry.grid(row=2, column=1) self.final_diameter_entry.configure(background="white") self.final_diameter_entry.configure(font="TkFixedFont") self.final_diameter_entry.configure(foreground="#000000") self.final_diameter_entry.configure(highlightbackground="#e6e6e6") self.final_diameter_entry.configure(highlightcolor="black") self.final_diameter_entry.configure(insertbackground="black") self.final_diameter_entry.configure(selectbackground="#c4c4c4") self.final_diameter_entry.configure(selectforeground="black") self.final_diameter_entry.configure(textvariable=self.final_diameter) self.Label6 = Label(self.Labelframe1) self.Label6.grid(row=2, column=2, sticky=W) self.Label6.configure(activebackground="#e6e6e6") self.Label6.configure(activeforeground="black") self.Label6.configure(background="#e6e6e6") self.Label6.configure(foreground="#000000") self.Label6.configure(highlightbackground="#e6e6e6") self.Label6.configure(highlightcolor="black") self.Label6.configure(text='''mm''') self.Entry4 = Entry(self.Labelframe1) self.Entry4.grid(row=3, column=1) self.Entry4.configure(background="white") self.Entry4.configure(font="TkFixedFont") self.Entry4.configure(foreground="#000000") self.Entry4.configure(highlightbackground="#e6e6e6") self.Entry4.configure(highlightcolor="black") self.Entry4.configure(insertbackground="black") self.Entry4.configure(selectbackground="#c4c4c4") self.Entry4.configure(selectforeground="black") self.Entry4.configure(textvariable=self.filament_width_og) self.Label7 = Label(self.Labelframe1) self.Label7.grid(row=3, column=2, sticky=W) self.Label7.configure(activebackground="#e6e6e6") self.Label7.configure(activeforeground="black") self.Label7.configure(background="#e6e6e6") self.Label7.configure(foreground="#000000") self.Label7.configure(highlightbackground="#e6e6e6") self.Label7.configure(highlightcolor="black") self.Label7.configure(text='''mm''') self.Label8 = Label(self.Labelframe1) self.Label8.grid(row=3, column=0, sticky=E) self.Label8.configure(activebackground="#e6e6e6") self.Label8.configure(activeforeground="black") self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(highlightbackground="#e6e6e6") self.Label8.configure(highlightcolor="black") self.Label8.configure(text='''Filament Width''') self.tip = Label(self.Labelframe1, width=300, height=300) __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) img = Image.open(os.path.join(__location__, 'dimensions.png')) one = ImageTk.PhotoImage(img) self.tip = Label(self.Labelframe1, image=one) self.tip.image = one self.tip.configure(background="#e6e6e6") self.tip.grid(row=4, columnspan=3) self.Labelframe2 = LabelFrame(top) self.Labelframe2.grid(row=1, column=1, sticky=N+S) self.Labelframe2.configure(relief=GROOVE) self.Labelframe2.configure(foreground="black") self.Labelframe2.configure(text='''Print Properties''') self.Labelframe2.configure(background="#e6e6e6") self.Labelframe2.configure(highlightbackground="#e6e6e6") self.Labelframe2.configure(highlightcolor="black") self.Label9 = Label(self.Labelframe2) self.Label9.grid(row=0, column=0, sticky=E) self.Label9.configure(activebackground="#e6e6e6") self.Label9.configure(activeforeground="black") self.Label9.configure(background="#e6e6e6") self.Label9.configure(foreground="#000000") self.Label9.configure(highlightbackground="#e6e6e6") self.Label9.configure(highlightcolor="black") self.Label9.configure(text='''Helix Angle''') self.Entry5 = Entry(self.Labelframe2) self.Entry5.grid(row=0, column=1) self.Entry5.configure(background="white") self.Entry5.configure(font="TkFixedFont") self.Entry5.configure(foreground="#000000") self.Entry5.configure(highlightbackground="#e6e6e6") self.Entry5.configure(highlightcolor="black") self.Entry5.configure(insertbackground="black") self.Entry5.configure(selectbackground="#c4c4c4") self.Entry5.configure(selectforeground="black") self.Entry5.configure(textvariable=self.helix_angle) self.Label10 = Label(self.Labelframe2) self.Label10.grid(row=0, column=2, sticky=W) self.Label10.configure(activebackground="#e6e6e6") self.Label10.configure(activeforeground="black") self.Label10.configure(background="#e6e6e6") self.Label10.configure(foreground="#000000") self.Label10.configure(highlightbackground="#e6e6e6") self.Label10.configure(highlightcolor="black") self.Label10.configure(text='''degrees [0 - 90]''') self.strong_targeter_button = Radiobutton(self.Labelframe2) self.strong_targeter_button.grid(row=1, column=0, sticky=E) self.strong_targeter_button.configure(variable=self.use_strong_pattern) self.strong_targeter_button.configure(value=True) self.strong_targeter_button.configure(activebackground="#e6e6e6") self.strong_targeter_button.configure(activeforeground="black") self.strong_targeter_button.configure(background="#e6e6e6") self.strong_targeter_button.configure(foreground="#000000") self.strong_targeter_button.configure(highlightbackground="#e6e6e6") self.strong_targeter_button.configure(highlightcolor="black") self.strong_targeter_label = Label(self.Labelframe2) self.strong_targeter_label.grid(row=1, column=1, sticky=W) self.strong_targeter_label.configure(activebackground="#e6e6e6") self.strong_targeter_label.configure(activeforeground="black") self.strong_targeter_label.configure(background="#e6e6e6") self.strong_targeter_label.configure(foreground="#000000") self.strong_targeter_label.configure(highlightbackground="#e6e6e6") self.strong_targeter_label.configure(highlightcolor="black") self.strong_targeter_label.configure(text="Strong angle pattern") self.default_targeter_button = Radiobutton(self.Labelframe2) self.default_targeter_button.grid(row=2, column=0, sticky=E) self.default_targeter_button.configure(activebackground="#e6e6e6") self.default_targeter_button.configure(activeforeground="black") self.default_targeter_button.configure(background="#e6e6e6") self.default_targeter_button.configure(foreground="#000000") self.default_targeter_button.configure(highlightbackground="#e6e6e6") self.default_targeter_button.configure(highlightcolor="black") self.default_targeter_button.configure( variable=self.use_strong_pattern) self.default_targeter_button.configure(value=False) self.default_targeter_label = Label(self.Labelframe2) self.default_targeter_label.grid(row=2, column=1, sticky=W) self.default_targeter_label.configure(activebackground="#e6e6e6") self.default_targeter_label.configure(activeforeground="black") self.default_targeter_label.configure(background="#e6e6e6") self.default_targeter_label.configure(foreground="#000000") self.default_targeter_label.configure(highlightbackground="#e6e6e6") self.default_targeter_label.configure(highlightcolor="black") self.default_targeter_label.configure(text="Default angle pattern") self.Scale1 = Scale(self.Labelframe2) self.Scale1.grid(row=5, column=1, columnspan=2, sticky=S+W) self.Scale1.configure(activebackground="#e6e6e6") self.Scale1.configure(background="#e6e6e6") self.Scale1.configure(font="TkTextFont") self.Scale1.configure(foreground="#000000") self.Scale1.configure(from_="5.0") self.Scale1.configure(highlightbackground="#d9d9d9") self.Scale1.configure(highlightcolor="black") self.Scale1.configure(length="150") self.Scale1.configure(orient="horizontal") self.Scale1.configure(resolution="5.0") self.Scale1.configure(troughcolor="#d9d9d9") self.Scale1.configure(variable=self.smear_factor) self.Label8 = Label(self.Labelframe2) self.Label8.grid(row=3, column=0, sticky=E) self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(text='''Flow rate''') self.Entry6 = Entry(self.Labelframe2) self.Entry6.grid(row=3, column=1) self.Entry6.configure(background="white") self.Entry6.configure(font="TkFixedFont") self.Entry6.configure(foreground="#000000") self.Entry6.configure(highlightbackground="#e6e6e6") self.Entry6.configure(highlightcolor="black") self.Entry6.configure(insertbackground="black") self.Entry6.configure(selectbackground="#c4c4c4") self.Entry6.configure(selectforeground="black") self.Entry6.configure(textvariable=self.flow_rate) self.Label12 = Label(self.Labelframe2) self.Label12.grid(row=3, column=2, sticky=W) self.Label12.configure(activebackground="#e6e6e6") self.Label12.configure(activeforeground="black") self.Label12.configure(background="#e6e6e6") self.Label12.configure(foreground="#000000") self.Label12.configure(highlightbackground="#d9d9d9") self.Label12.configure(highlightcolor="black") self.Label12.configure(text='''cm^3 / s''') self.uv_label = Label(self.Labelframe2) self.uv_label.grid(row=4, column=0, sticky=E) self.uv_label.configure(activebackground="#e6e6e6") self.uv_label.configure(activeforeground="black") self.uv_label.configure(background="#e6e6e6") self.uv_label.configure(foreground="#000000") self.uv_label.configure(highlightbackground="#d9d9d9") self.uv_label.configure(highlightcolor="black") self.uv_label.configure(text="UV Distance") self.uv_entry = Entry(self.Labelframe2) self.uv_entry.grid(row=4, column=1) self.uv_entry.configure(background="white") self.uv_entry.configure(font="TkFixedFont") self.uv_entry.configure(foreground="#000000") self.uv_entry.configure(highlightbackground="#e6e6e6") self.uv_entry.configure(highlightcolor="black") self.uv_entry.configure(insertbackground="black") self.uv_entry.configure(selectbackground="#c4c4c4") self.uv_entry.configure(selectforeground="black") self.uv_entry.configure(textvariable=self.uv_offset) self.uv_label_2 = Label(self.Labelframe2) self.uv_label_2.grid(row=4, column=2, sticky=W) self.uv_label_2.configure(activebackground="#e6e6e6") self.uv_label_2.configure(activeforeground="black") self.uv_label_2.configure(background="#e6e6e6") self.uv_label_2.configure(foreground="#000000") self.uv_label_2.configure(highlightbackground="#d9d9d9") self.uv_label_2.configure(highlightcolor="black") self.uv_label_2.configure(text='''mm''') self.Label11 = Label(self.Labelframe2) self.Label11.grid(row=5, column=0, sticky=S+E) self.Label11.configure(activebackground="#e6e6e6") self.Label11.configure(activeforeground="black") self.Label11.configure(background="#e6e6e6") self.Label11.configure(foreground="#000000") self.Label11.configure(highlightbackground="#d9d9d9") self.Label11.configure(highlightcolor="black") self.Label11.configure(text='''Layer Height %''') self.Label13 = Label(self.Labelframe2) self.Label13.grid(row=6, columnspan=3) self.Label13.configure(activebackground="#f9f9f9") self.Label13.configure(activeforeground="black") self.Label13.configure(background="#e6e6e6") self.Label13.configure(foreground="#000000") self.Label13.configure(highlightbackground="#d9d9d9") self.Label13.configure(highlightcolor="black") self.Label13.configure(text='''caution: layer height % is experimental default = 100% (ie. layer height = filament width)''') self.Message1 = Message(self.Labelframe2) self.Message1.grid(row=8, columnspan=3) self.Message1.configure(anchor=N) self.Message1.configure(background="#e6e6e6") self.Message1.configure(foreground="#000000") self.Message1.configure(highlightbackground="#e6e6e6") self.Message1.configure(highlightcolor="black") self.Message1.configure(text='''Helix Angle Conditions: If the angle is > 90, it will be set to 90 degrees If angle is < 0, it will be set to 0 degrees If angle = 0, the layer will consist of a single helix printed as close \ together as possible If angle = 90, the layer will consist of many straight lines''') self.tip2 = Label(self.Labelframe2, width=300, height=91) img2 = Image.open(os.path.join(__location__, 'theta.jpg')) two = ImageTk.PhotoImage(img2) self.tip2 = Label(self.Labelframe2, image=two) self.tip2.image = two self.tip2.configure(background="#e6e6e6") self.tip2.grid(row=7, columnspan=3) self.Label8 = Label(top) self.Label8.grid(row=5, columnspan=2) self.Label8.configure(background="#e6e6e6") self.Label8.configure(foreground="#000000") self.Label8.configure(text='''G Code file will be saved on your Desktop under: "gcode/timestamp_skeleprint_gcode.gcode"''') self.Button1 = Button(top) self.Button1.grid(row=2, columnspan=2) self.Button1.configure(activebackground="#e6e6e6") self.Button1.configure(activeforeground="#e6e6e6") self.Button1.configure(background="#e6e6e6") self.Button1.configure(command=lambda: tpg_gui_support.tpg( self.axial_length.get(), self.filament_width_og.get(), self.printbed_diameter.get(), self.final_diameter.get(), self.helix_angle.get(), self.smear_factor.get(), self.flow_rate.get(), self.uv_offset.get(), self.use_strong_pattern.get())) self.Button1.configure(foreground="#000000") self.Button1.configure(highlightbackground="#e6e6e6") self.Button1.configure(highlightcolor="black") self.Button1.configure(relief=RAISED) self.Button1.configure(text='''Generate G Code''') self.menubar = Menu(top, font="TkMenuFont", bg=_bgcolor, fg=_fgcolor) top.configure(menu=self.menubar)