Вікна у Python (Приклади програм з Tkinter). Метод .grid()

Програма обрахунку депозиту. Використання модуля tkMessageBox.

# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
root = Tk ()
root.title ('depozit')
root.geometry ('460x280')
root.resizable(width=False, height=False)

lbl_1 = Label(root, text='Сума депозиту', font='Arial 14')
lbl_1.grid(row=0,column=0)
ent1 = Entry(root, width=15,bg="white",justify=LEFT, font='Arial 14')
ent1.grid(row=0,column=1)
lbl_1 = Label(root, text='грн.', font='Arial 14')
lbl_1.grid(row=0,column=2)

lbl_2 = Label(root, text='Річний відсоток', font='Arial 14')
lbl_2.grid(row=1,column=0)
ent2 = Entry(root, width=15,bg="white",justify=LEFT, font='Arial 14')
ent2.grid(row=1,column=1)
lbl_2 = Label(root, text='%', font='Arial 14')
lbl_2.grid(row=1,column=2)

lbl_3 = Label(root, text='Термін депозиту', font='Arial 14')
lbl_3.grid(row=2,column=0)
ent3 = Entry(root, width=15,bg="white",justify=LEFT, font='Arial 14')
ent3.grid(row=2,column=1)
lbl_3 = Label(root, text='міс', font='Arial 14')
lbl_3.grid(row=2,column=2)

def obrahynok ():
    sp = float (ent1.get())
    v = float (ent2.get())
    t = int (ent3.get())
    if t<=0:
        tkMessageBox.showinfo('Помилка', 'Введіть кількість місяців більших за 0')
    k=1
    suma=sp
    v=v/1200
    while k<=t:
        suma=suma+suma*v
        k=k+1
    sv=suma-sp
    lbl4.configure(text=round(sv,2))
    lbl5.configure(text=round (suma,2))

btn_1 = Button(root, text='Обрахувати', font='Arial 14', command=obrahynok)
btn_1.grid(row=3,column=1)
               
lbl_4 = Label(root, text='Нарахування по відсотках', font='Arial 12')
lbl_4.grid(row=4,column=0)
lbl4 = Label(root, text='?', font='Arial 14')
lbl4.grid(row=4,column=1)
lbl_4 = Label(root, text='грн.', font='Arial 14')
lbl_4.grid(row=4,column=2)

lbl_5 = Label(root, text='Сума депозиту', font='Arial 12')
lbl_5.grid(row=5,column=0)
lbl5 = Label(root, text='?', font='Arial 14')
lbl5.grid(row=5,column=1)
lbl_5 = Label(root, text='грн.', font='Arial 14')
lbl_5.grid(row=5,column=2)

btn_2 = Button(root, text="Вихід", bg="white", fg="red", font="Arial 14", command=root.destroy)
btn_2.grid(row=6,column=2)

root.mainloop ()

Програма, що імітує “Магічний шар”. Використання модулів tkMessageBox,  random, time. Робота зі списками.

from Tkinter import *
import tkMessageBox
root = Tk ()
root.title ('magik ball')
root.geometry ("640x640")
root.resizable(width=False, height=False)
 
cnv = Canvas(root, width=640, height=640, bg='lemonchiffon')# створюємо полотно
cnv.grid(row=4,column=4)
cnv.create_oval(160, 160, 480, 480, fill='black')# створюємо чорне коло
cnv.create_oval(180, 180, 460, 460, fill='blue')# створюємо синє коло
cnv.create_oval(460, 260,460, 260, fill='white')# створюємо біле коло

from random import *
from time import * 
def magik():
    a='sign points to yes'
    b='my sourses say no'
    c='reply hazy, try again'
    d='my reply is no'
    e='it is certain'
    f='without a doubt'
    g='it is decidedly so'
    h='yes'
    i='no'
    j='outlook good'
    k='concentrate and ask again'
    l='most likely'
    m='you may rely on it'
    n='do not count on it'
    o='cannot predict now'
    p='outlool not so good'
    q='very doubtful'
    r='as i see it, yes'    
    sleep(0.5)
    otvet=choice([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r])
    o_lbl.configure(text=otvet)
but = Button(root, text='RESTART', width=15, height=1, bg="red", fg="white", font="Arial",command=magik)
but.grid(row=1,column=4) 
o_lbl = Label(root, foreground ='red', font= (14),text='?')
o_lbl.grid(row=4,column=4)
tkMessageBox.showinfo('Question', 'Ask me questions and click restart')
root.mainloop ()

Калькулятор електроенергії (дійсний із 01.10.2021 р). Використання фреймів, модуля tkMessageBox, методу focus().

# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
root.title ('energy calc')
root.geometry ('460x320')
root.resizable(width=False, height=False)

f_1 = LabelFrame(text='1 зона')
f_2 = LabelFrame(text='2 зони')
f_1.pack()
f_2.pack()

pot_1 = Label(f_1, text='Поточні покази')
pot_1.grid(row=0, column=0)
pot_1 = Entry(f_1, width=10)
pot_1.grid(row=0, column=1)
pot_1.focus()
pot_1_od = Label(f_1, text='кВт*год')
pot_1_od .grid(row=0, column=2)

pop_1 = Label(f_1, text='Попередні покази')
pop_1.grid(row=1, column=0)
pop_1 = Entry(f_1, width=10)
pop_1.grid(row=1, column=1)
pop_1_od= Label(f_1, text='кВт*год')
pop_1_od.grid(row=1, column=2)

rizn_1 = Label(f_1, text='Різниця')
rizn_1.grid(row=2, column=0)
rizn_1 = Label(f_1, text='?')
rizn_1.grid(row=2, column=1)
rizn_1_od = Label(f_1, text='кВт*год')
rizn_1_od.grid(row=2, column=2)

vart_1 = Label(f_1, text='Вартість')
vart_1.grid(row=3, column=0)
vart_1 = Label(f_1, text='?')
vart_1.grid(row=3, column=1)
vart_1_od = Label(f_1, text='грн')
vart_1_od.grid(row=3, column=2)

def calc_1 ():
    pt_1=int(pot_1.get())
    pp_1=int(pop_1.get())
    if pt_1 and pp_1 <=0:
        tkMessageBox.showinfo('Помилка', 'Введіть правильні дані лічильника')
    razn=pt_1-pp_1
    if razn<=250:
      vart=razn*1.44
    else:
      vart=razn*1.68
    
    rizn_1.configure(text=razn)
    vart_1.configure(text=round(vart,2))

but_1 = Button(f_1, text='Розрахувати', command=calc_1)
but_1.grid(row=4, column=1)

lbl_1 = Label(f_2, text='День')
lbl_1.grid(row=0, column=1)
lbl_2 = Label(f_2, text='Ніч')
lbl_2.grid(row=0, column=3)

lbl_3 = Label(f_2, text='Поточні покази')
lbl_3.grid(row=1, column=0)
ent_1 = Entry(f_2, width=10)
ent_1.grid(row=1, column=1)
ent_2 = Entry(f_2, width=10)
ent_2.grid(row=1, column=3)
lbl_4 = Label(f_2, text='кВт*год')
lbl_4.grid(row=1, column=4)

lbl_5 = Label(f_2, text='Попередні покази')
lbl_5.grid(row=2, column=0)
ent_3 = Entry(f_2, width=10)
ent_3.grid(row=2, column=1)
ent_4 = Entry(f_2, width=10)
ent_4.grid(row=2, column=3)
lbl_6 = Label(f_2, text='кВт*год')
lbl_6.grid(row=2, column=4)

lbl_7 = Label(f_2, text='Різниця')
lbl_7.grid(row=3, column=0)
lbl_8 = Label(f_2, text='?')
lbl_8.grid(row=3, column=1)
lbl_9 = Label(f_2, text='?')
lbl_9.grid(row=3, column=3)
lbl_10 = Label(f_2, text='кВт*год')
lbl_10.grid(row=3, column=4)

lbl_11 = Label(f_2, text='Вартість')
lbl_11.grid(row=4, column=0)
lbl_12 = Label(f_2, text='?')
lbl_12.grid(row=4, column=2)
lbl_13 = Label(f_2, text='грн')
lbl_13.grid(row=4, column=3)

def calc_2 ():
    pot_d=int(ent_1.get())
    pot_n=int(ent_2.get())
    pop_d=int(ent_3.get())    
    pop_n=int(ent_4.get())
    if pot_d and pop_d and pot_n and pop_n <=0:
        tkMessageBox.showinfo('Помилка', 'Введіть правильні дані лічильника')
    razn_d=pot_d-pop_d
    razn_n=pot_n-pop_n
    summ_razn=razn_d+razn_n
    if summ_razn<=250:
      vart=razn_d*1.44+razn_n*0.72
    else:
      vart=razn_d*1.68+razn_n*0.84
    
    lbl_8.configure(text=razn_d)
    lbl_9.configure(text=razn_n)
    lbl_12.configure(text=round(vart,2))

but_2 = Button(f_2, text='Розрахувати', command=calc_2)
but_2.grid(row=5, column=2)

root.mainloop()