Thursday, 15 March 2018

Python function eg - Day 20


  • this will explain how to create a funtion in python and call it,if the funtion doesnot returns any value then it will be treated as none
  • to view the definition of the function you can do -- ctrl + left click

  •   
    def python_food():
        print("Spinach is good for health")
    
    python_food()
    print (python_food())
    
    def center_text():
        width = 50
        text = 'Spinach is good for health'
        leftalignment = (width - len(text))//2
        print(' '*leftalignment,text)
    
    center_text()
    print('='*20)
    
    def center_text1(text):
        width = 50
        leftalignment = (width - len(text))//2
        print(' '*leftalignment,text)
    
    
    
    center_text1('Spinach is Good for Health')
    center_text1('Excecise is goood for body')
    center_text1('Life is worth living')
    center_text1('Love yourself')
     
    
  • the below code is the text behind the print function,we can see only the basic info not the code since this is written in C-language
  •  
     
    def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
        """
        print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
        
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        sep:   string inserted between values, default a space.
        end:   string appended after the last value, default a newline.
        flush: whether to forcibly flush the stream.
        """
        pass
     
    

    Python tkinter - Calculator GUI - Day 20


  • this is the code for the model calculator,it is just a GUI,funtionality will be implemented in later lessons

  •   
    import tkinter
    
    keys = [[('C','1'),('CE','1')],
            [('7','1'),('8','1'),('9','1'),('+','1')],
            [('4','1'),('5','1'),('6','1'),('-','1')],
            [('1','1'),('2','1'),('3','1'),('*','1')],
            [('0','1'),('=','1'),('/','1')]]
    
    mainWindowPadding = 10
    
    mainWindow = tkinter.Tk()
    mainWindow.title("Calculator")
    mainWindow.geometry("800x480-8+200")
    mainWindow["padx"]= mainWindowPadding
    
    result = tkinter.Entry(mainWindow)
    result.grid(row=0,column=0,sticky = 'nsew')
    
    keypad = tkinter.Frame(mainWindow)
    keypad.grid(row=1,column=0,sticky = 'nsew')
    
    row = 0
    for keyrow in keys:
        column = 0
        for key in keyrow:
            tkinter.Button(keypad,text = key[0]).grid(row=row,column=column,
    columnspan = key[1],sticky ='ew')
            column+=1
        row+=1
    
    
    mainWindow.update()
    mainWindow.minsize(keypad.winfo_width()+mainWindowPadding,result.winfo_height()
    +keypad.winfo_height())
    mainWindow.maxsize(keypad.winfo_width()+50 + mainWindowPadding,result.winfo_height()+50 
    + keypad.winfo_height())
    mainWindow.mainloop()
     
    

    Wednesday, 14 March 2018

    Python tkinter advanced gui - Day 19


  • #weight property ,is used so that we can decide which rows and columns should remain less expandable or minimizable when maximizing the window or shrinking it. titles buttons should have less weight where as scroll bar,list should have more weight

  •   
    import tkinter
    import os
    
    mainwindow = tkinter.Tk()
    mainwindow.title("GRID DEMO")
    mainwindow.geometry('600x480-8-200')
    
    label =tkinter.Label(mainwindow,text ='tkinter grid demo label')
    label.grid(row=0,column=0,columnspan = 3)
    
    mainwindow.columnconfigure(0,weight=1)
    mainwindow.columnconfigure(1,weight=1)
    mainwindow.columnconfigure(2,weight=3)
    mainwindow.columnconfigure(3,weight=3)
    mainwindow.columnconfigure(4,weight=3)
    mainwindow.rowconfigure(0,weight=1)
    mainwindow.rowconfigure(1,weight=10)
    mainwindow.rowconfigure(2,weight=1)
    mainwindow.rowconfigure(3,weight=3)
    mainwindow.rowconfigure(4,weight=3)
    
    filelist =tkinter.Listbox(mainwindow)
    filelist.grid(row=1,column=0,sticky = 'nsew',rowspan=2)
    filelist.config(border=2,relief = 'sunken')
    for zone in os.listdir('/Windows/System32/drivers/'):#sample path
        filelist.insert(tkinter.END,zone)
    
    listscroll = tkinter.Scrollbar(mainwindow,orient = tkinter.VERTICAL,command = filelist.yview)
    listscroll.grid(row = 1,column=1,sticky = 'nsw',rowspan=2)
    filelist['yscrollcommand']=listscroll.set
    
    optionframe = tkinter.LabelFrame(mainwindow,text = 'File Details')
    optionframe.grid(row=1,column=2,sticky ='ne')
    
    rbvalue = tkinter.IntVar()
    rbvalue.set(3)#to set the default option for radiobutton
    
    #radio Buttons
    radio1= tkinter.Radiobutton(optionframe,text = 'FileName',value =1,variable =rbvalue)
    radio2= tkinter.Radiobutton(optionframe,text = 'Path',value =2,variable =rbvalue)
    radio3= tkinter.Radiobutton(optionframe,text = 'TimeStamp',value =3,variable =rbvalue)
    radio1.grid(row=0,column=0,sticky ='w')
    radio2.grid(row=1,column=0,sticky ='w')
    radio3.grid(row=2,column=0,sticky ='w')
    
    #widget to display the result
    resultLabel = tkinter.Label(mainwindow,text ="Result")
    resultLabel.grid(row=2,column=2,sticky='nw')
    result = tkinter.Entry(mainwindow)
    result.grid(row=2,column=2,sticky='sw')
    
    #Frame for Time Spinners
    timeFrame = tkinter.LabelFrame(mainwindow,text = 'Time')
    timeFrame.grid(row=3,column=0,sticky = 'new')
    #Time Spinners
    hourSpinner = tkinter.Spinbox(timeFrame,width=2,values = tuple(range(0,24)))
    minuteSpinner = tkinter.Spinbox(timeFrame,width=2,from_=0,to=59)
    secondSpinner = tkinter.Spinbox(timeFrame,width=2,values = tuple(range(0,60)))
    hourSpinner.grid(row=0,column=0)
    tkinter.Label(timeFrame,text=':').grid(row=0,column=1)
    minuteSpinner.grid(row=0,column=2)
    tkinter.Label(timeFrame,text=':').grid(row=0,column=3)
    secondSpinner.grid(row=0,column=4)
    timeFrame['padx']=36
    
    #Frame for Date Spinners
    dateFrame = tkinter.Frame(mainwindow)
    dateFrame.grid(row=4,column=0,sticky = 'new')
    #Date Labels
    dayLabel = tkinter.Label(dateFrame,text='Day')
    monthLabel = tkinter.Label(dateFrame,text='Month')
    yearLabel = tkinter.Label(dateFrame,text='Year')
    dayLabel.grid(row=0,column=0,sticky ='w')
    monthLabel.grid(row=0,column=1,sticky ='w')
    yearLabel.grid(row=0,column=2,sticky ='w')
    #Date Spinners
    daySpin = tkinter.Spinbox(dateFrame,width=5,from_=1,to=31)
    monthSpin = tkinter.Spinbox(dateFrame,width=5,values=("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))
    yearSpin = tkinter.Spinbox(dateFrame,width=5,from_=2000,to=2099)
    daySpin.grid(row=1,column=0)
    monthSpin.grid(row=1,column=1)
    yearSpin.grid(row=1,column=2)
    
    #buttons
    okButton = tkinter.Button(mainwindow,text = 'OK')
    cancelButton = tkinter.Button(mainwindow,text = 'Cancel',command = mainwindow.destroy)
    okButton.grid(row=4,column=3,sticky='e')
    cancelButton.grid(row=4,column=4,sticky='w')
    
    mainwindow.mainloop()
    print (rbvalue.get())#to confirm the selection of correct value in radio button
     
    

    Tuesday, 13 March 2018

    Python tkinter - Day 18(10 days later)



  • Tkinter provides classes which allow the display, positioning and control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, Checkbutton, Scale, Listbox, Scrollbar, OptionMenu, Spinbox LabelFrame and PanedWindow.

  •   
    import tkinter
    print(tkinter.TkVersion)
    print(tkinter.TclVersion)
    
    # tkinter._test()
    # or we can use the below piece of code
    
    mainWindowvar = tkinter.Tk()
    
    mainWindowvar.title('test')
    # mainWindow.geometry('2000x2000')
    #below code will specify the screen size and position of the
    #new window
    mainWindowvar.geometry('400x400-5-10')
    
    
    # # help(tkinter)
    #
    # labelvar = tkinter.Label(mainWindowvar,text = "this is label")
    # labelvar.pack(side = "top")
    #
    # canvasvar = tkinter.Canvas(mainWindowvar, relief = 'raised',borderwidth=1)
    # canvasvar.pack(side='left', anchor = 'n')
    # button1 = tkinter.Button(mainWindowvar,text = "button1")
    # button2 = tkinter.Button(mainWindowvar,text = "button2")
    # button3 = tkinter.Button(mainWindowvar,text = "button3")
    # button1.pack(side ='top')
    # button2.pack(side ='top')
    # button3.pack(side ='top')
    #
    # mainWindowvar.mainloop()
    
    
    # help(tkinter)
    
    #the above code will work but to make it proper we
    #can introduce frame
    
    labelvar = tkinter.Label(mainWindowvar,text = "this is label")
    labelvar.pack(side = "top")
    
    leftframevar = tkinter.Frame(mainWindowvar)
    leftframevar.pack(side='left',anchor = 'n',fill=tkinter.Y,expand =False)
    
    canvasvar = tkinter.Canvas(leftframevar, relief = 'raised',borderwidth=1)
    canvasvar.pack(side='left', anchor = 'n')
    
    rightframevar = tkinter.Frame(mainWindowvar)
    rightframevar.pack(side='right',anchor = 'n',fill=tkinter.Y,expand =True)
    
    button1 = tkinter.Button(rightframevar,text = "button1")
    button2 = tkinter.Button(rightframevar,text = "button2")
    button3 = tkinter.Button(rightframevar,text = "button3")
    button1.pack(side ='top')
    button2.pack(side ='top')
    button3.pack(side ='top')
    
    mainWindowvar.mainloop()