Python Tkinter Custom Window

1k views Asked by At

I have this simple Tkinter Custom Window. I am a beginner and only learnt tkinter a few months ago. I have no experience in real software development. So, I would like to know if the way it was coded is acceptable? I know that when i say acceptable , it could mean a lot of things. I just want to know what are the things i should improve in my coding style & the way i think?

import Tkinter as tk

''' Creating Tkinter Tk instance '''
class Application(tk.Tk):
    def __init__(self,*args,**kwargs):
        tk.Tk.__init__(self,*args,**kwargs)
        self.bind("<ButtonPress-1>", self.StartMove)
        self.bind("<ButtonRelease-1>", self.StopMove)
        self.bind("<B1-Motion>", self.OnMotion)
        self.Init()
        self.Layout()
        self.AddButtons()

    ''' Setting Main Tk window size & styles '''
    def Init(self):
        self.geometry("1280x700+0+0")
        self.overrideredirect(True)
        self['background'] = '#201F29'
        self['highlightthickness'] = 2
        self['relief'] = 'groove'

    '''Layout of the Tk window'''
    def Layout(self):
        self.exitmenu = tk.Frame(self)
        self.exitmenu.place(x = 1217,  y = 0)
        self.container = tk.Frame(self,width = 1268,height = 648 , relief = 'flat',bd = 0)
        self.container.place(x = 5,y = 40)

    ''' Adding Exit button and Minimize button to the Tk window'''
    def AddButtons(self):
        self.minibutton = tk.Button(self.exitmenu,text = '0',font=('webdings',8,'bold'),relief = 'flat' , command = self.minimize )
        self.minibutton.pack(side = 'left')
        self.exitbutton = tk.Button(self.exitmenu,text = 'r',font=('webdings',8),relief = 'flat' ,bg = '#DB6B5A', command = self.destroy )
        self.exitbutton.pack(side = 'left')

    def minimize(self):
        self.overrideredirect(False)
        self.wm_state('iconic')
        self.overrideredirect(True)

    '''Methods for moving window frame'''
    def StartMove(self, event):
        self.x = event.x
        self.y = event.y

    def StopMove(self, event):
        self.x = None
        self.y = None

    def OnMotion(self, event):
        x1 = self.x
        y1 = self.y
        x2 = event.x
        y2 = event.y
        deltax = x2 - x1
        deltay = y2 - y1
        a = self.winfo_x() + deltax
        b = self.winfo_y() + deltay
        self.geometry("+%s+%s" % (a, b))


def Main():
    app = Application()
    app.mainloop()

if __name__ == "__main__":
    Main()
1

There are 1 answers

2
Steve Barnes On BEST ANSWER

Read PEP-8 Install and run one or all of PEP8 checker, pyFlakes, pyChecker, pylint.

The first thing that stands out is that docstrings are supposed to be within the function rather than before it - then they become a part of the function code and can be accessed by help.