class MyEntry(Entry): charwidth, bgcolor, fgcolor = 20, GrayScale(20), GrayScale(220) def __init__(self, parent, text, relx, rely): self.parent, self.text, self.relx, self.rely = parent, text, relx, rely Entry.__init__(self, self.parent) self.defaults() def defaults(self): self.entryConfigure() self.entryPlace() self.createLabel() def entryConfigure(self): self.configure(width=self.charwidth, font=MyFonts['Default'], bg=self.bgcolor, fg=self.fgcolor, relief=RIDGE, highlightthickness=2, bd=0) def entryPlace(self): self.place(relx=self.relx, rely=self.rely) def createLabel(self): self.label = MyLabel(self.parent, self.text, self.relx, self.rely - 0.050) self.label.configure(font=MyFonts['Large'])
class MyScale(Scale): bgcolor, fgcolor, lowrange, highrange, resolution, s_relwidth, s_relheight = GrayScale( 20), GrayScale(220), 1.0, 100.0, 0.1, 0.10, 0.05 def __init__(self, parent, text, relx, rely): self.parent, self.text, self.relx, self.rely = parent, text, relx, rely Scale.__init__(self, self.parent) self.l_val = StringVar() self.defaults() def defaults(self): self.scaleConfigure() self.scalePlace() self.labelCreate() def scaleConfigure(self): self.configure(command=self.update, from_=self.lowrange, to=self.highrange, orient=HORIZONTAL, showvalue=0, resolution=self.resolution, bg=self.bgcolor, fg=self.fgcolor, relief=RIDGE, highlightthickness=0, bd=0) def scalePlace(self): self.place(relx=self.relx, rely=(self.rely + 0.01), relwidth=self.s_relwidth, relheight=self.s_relheight) def createLabel(self): self.label = Label(self.parent) self.labelConfigure() self.labelPlace() def labelConfigure(self): self.label.configure(textvariable=self.l_val, font=MyFonts['Large'], bg=self.bgcolor, fg=self.fgcolor, relief=FLAT, padx=2, pady=2) def labelPlace(self): self.label.place(relx=self.relx, rely=self.rely - 0.050) def update(self, *args): self.l_val.set(self.text + ' = ' + str(Scale.get(self)))
def createButtons(self): tmp = False def placeholder(): pass self.button1 = MyButton(self.mainFrame, 'Convert!', self.gotoMain, 0.25, 0.20) if tmp: self.button2 = MyButton(self.mainFrame, 'Button2', placeholder, 0.25, 0.30) self.button3 = MyButton(self.mainFrame, 'Button3', placeholder, 0.25, 0.40) self.button4 = MyButton(self.mainFrame, 'Button4', placeholder, 0.25, 0.50) self.button5 = MyImageButton( self.mainFrame, GrayScale(20), createTkImage('data/images/preferences.png', 48, 48), self.gotoPreferences, 0.425, 0.65) self.button1.place(relwidth=0.50) if tmp: self.button2.place(relwidth=0.50) self.button3.place(relwidth=0.50) self.button4.place(relwidth=0.50) self.button5.place(relwidth=0.15, relheight=0.075)
def showtip(self, text): # showtip method for ToolTip class self.text = text if self.tipwindow or not self.text: return x, y, cx, cy = self.widget.bbox('insert') x = x + self.widget.winfo_rootx() + 60 y = y + cy + self.widget.winfo_rooty() + 30 self.tipwindow = tw = Toplevel(self.widget) tw.wm_overrideredirect(1) tw.wm_geometry('+%d+%d' % (x, y)) label = Label(tw, text=self.text) label.configure(justify=LEFT, relief=SOLID, bd=1, bg=GrayScale(60), fg=GrayScale(220), font=MyFonts['Default']) label.pack(ipadx=1)
class MyLabel(Label): bgcolor, fgcolor = GrayScale(20), GrayScale(220) def __init__(self, parent, text, relx, rely): self.parent, self.text, self.relx, self.rely = parent, text, relx, rely Label.__init__(self, self.parent) self.configure_() self.place_() def configure_(self): self.configure(text=self.text, font=MyFonts['Default'], bg=self.bgcolor, fg=self.fgcolor, relief=FLAT, anchor=N, padx=2, pady=2) def place_(self): self.place(relx=self.relx, rely=self.rely)
class MyButton(Button): bgcolor, fgcolor, relwidth, relheight = GrayScale(40), GrayScale(220), 0.10, 0.05 abgcolor, afgcolor = bgcolor, fgcolor def __init__(self, parent, text, command, relx, rely): self.text, self.command, self.relx, self.rely = text, command, relx, rely Button.__init__(self, parent) self.configure_() self.place_() def configure_(self): self.configure(text=self.text, command=self.command, font=MyFonts['DefaultBold'], bg=self.bgcolor, fg=self.fgcolor, activebackground=self.abgcolor, activeforeground=self.afgcolor, relief=RIDGE, highlightthickness=0, bd=0) def place_(self): self.place(relx=self.relx, rely=self.rely, relwidth=self.relwidth, relheight=self.relheight)
def createFrames(self): self.mainFrame = MyFrame(self.parent, GrayScale(0)) self.mainFrame.place(relx=self.relx, rely=self.rely, relwidth=self.relwidth, relheight=self.relheight) self.frame1 = MyFrame(self.mainFrame, GrayScale(80)) self.frame2 = MyFrame(self.mainFrame, GrayScale(60)) self.button1 = MyButton(self.frame1, 'Disabled', self.func1, 0, 0) self.button2 = MyButton(self.frame2, 'Enabled', self.func2, 0, 0) gs20, gs40, gs180 = GrayScale(20), GrayScale(40), GrayScale(180) self.button1.configure(bg=gs40, activebackground=gs180, fg=gs20) self.button2.configure(bg=gs180, activebackground=gs40, fg=gs20) self.button1.place(relwidth=1, relheight=1) self.button2.place(relwidth=1, relheight=1)
def createFrame(self): self.mainFrame = MyFrame(self.root, GrayScale(20))
def createSaveButton(self): self.save_button = MyImageButton( self.mainFrame, GrayScale(20), createTkImage('data/images/save.png', 48, 48), self.funcSave, 0.56, 0.85) self.save_button.place(relwidth=0.14, relheight=0.07)
def createResetButton(self): self.reset_button = MyImageButton( self.mainFrame, GrayScale(20), createTkImage('data/images/reset.png', 48, 48), self.funcReset, 0.30, 0.85) self.reset_button.place(relwidth=0.14, relheight=0.07)
def createCreditsLabel(self): credits_text = 'Created By: Yaqin Hasan' self.creditsLabel = MyLabel(self.mainFrame, credits_text, 0.25, 0.75) self.creditsLabel.configure(font=MyFonts['Default'], fg=GrayScale(180)) self.creditsLabel.place(relwidth=0.50, relheight=0.25)
def programQuit(*args): if dev: print('[program] quit') exit() return None # creating root root = Tk() root.title('MyApp') root.iconbitmap('data/images/favicon.icosome psssssome optimizat') root.resizable(False, False) root.geometry(makeGeometry(root, config_width, config_height)) root.configure(bg=GrayScale(20)) # creating StartPage instance 'startPage' startPage = StartPage(root) def raiseStart(*args): root.geometry(makeGeometry(root, int(config_height / 2), config_height)) startPage.mainFrame.tkraise() raiseStart() # binds root.bind('<Control-q>', programQuit) root.bind('<Control-r>', programRestart)