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

Застереження !!!

Всі прикладі створені за допомогою Wing IDE 101 5.1. При використанні стандартного IDLE (Python GUI) на початку програми потрібно прописати рядок: # -*- coding: utf-8 -*-

Простий калькулятор. Використання модуля math.

from Tkinter import *
from math import * 

root = Tk()
root.title('Простий калькулятор')
root.geometry('300x150')

def calc():
    res.configure(text = 'Результат=' + str(eval(ent.get())))

lbl=Label(root, text='Ваш вираз:')
lbl.pack()

ent = Entry(root)
ent.bind('', calc)
ent.pack()

res = Label(root)
res.pack()

btn1 = Button(root, text='Обрахувати',  width=15, height=1, command=calc)
btn1.pack()

lbl2=Label(root, text='----', fg='red')
lbl2.pack()

btn2 = Button(root, text='EXIT', fg='red', width=15, height=1, command=root.destroy)
btn2.pack()

root.mainloop()

Програма, що за двома відомими сторонами та кутом між ними знаходить довжину третьої сторони і його площу. Використання модуля math, робота із полями вводу даних

# -*- coding: utf-8 -*-
from Tkinter import *
from math import * 
root=Tk()
root.title('Трикутник')
root.geometry('250x250')
root.resizable(width=False, height=False) # заборона змінювати розміри вікна

lbl1 = Label(root, text='Сторона a')
lbl1.pack()
a_ent = Entry(width=25,bg="white",justify=CENTER)
a_ent.pack()
lbl2= Label(root, text='Сторона b')
lbl2.pack()
b_ent = Entry(width=25,bg="white",justify=CENTER)
b_ent.pack()
lbl3 = Label(root, text='Кут між сторонами')
lbl3.pack()
alfa_ent = Entry(width=25,bg="white",justify=CENTER)
alfa_ent.pack()

def tryk ():
    a = float (a_ent.get())
    b = float (b_ent.get())
    alfa = float (alfa_ent.get())
    c=sqrt(a*a+b*b-2*a*b*cos((alfa*pi)/180))
    s=(a*b*sin((alfa*pi)/180))/2
    c_lbl.configure(text=c)
    s_lbl.configure(text=s)

but = Button(root, text="Результат", command=tryk)
but.pack()

lbl4 = Label(root, text='Сторона c')
lbl4.pack()
c_lbl = Label(root, text='c= ?') 
c_lbl.pack()

lbl5 = Label(root, text='Площа')
lbl5.pack()
s_lbl = Label(root, text='S= ?')
s_lbl.pack()

root.mainloop ()

Програма перетворення градусів Цельсія та Фаренгейта в Кельвіни. Використання модуля tkMessageBox (діалогове вікно), робота з Radiobutton

# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
root=Tk()
root.title('Температура')
root.geometry('250x250')
root.resizable(width=False, height=False) 
 
lbl1 = Label(root, text='Температура')
lbl1.pack()
t_ent = Entry(width=25,bg='white',justify=CENTER)
t_ent.pack()

v=IntVar()
rad1 = Radiobutton(root,text='Цельсій',variable=v,value=1)
rad2 = Radiobutton(root,text='Фаренгейт',variable=v,value=2)
rad1.pack()
rad2.pack()
 
def temp ():
 t = float (t_ent.get())
 var = v.get() 
 if var==1:
     T = t+273.15
 if var==2:
     T = ((t-32)*5)/9 + 273.15
 if T<0:
     tkMessageBox.showinfo('Помилка', '0 К найменша температура у Всесвіті')
     T='error'
 T_lbl.configure(text=T)
 
but = Button(root, text='Результат', command=temp)
but.pack()
 
lbl4 = Label(root, text='Температура в Кельвінах')
lbl4.pack()
T_lbl = Label(root, text='Т= ?') 
T_lbl.pack()

root.mainloop ()

Знаходження суми елементів, максимального та мінімального елементів одномірного масиву (списка). Використання модуля random.

# -*- coding: utf-8 -*-
from Tkinter import *
from random import *
import tkMessageBox
root=Tk()
root.title('Списки')
root.geometry('200x200')
root.resizable(width=False, height=False) 
 
lbl1 = Label(root, text='Одномірний масив')
lbl1.pack()
n_ent = Entry(width=25,bg='white',justify=CENTER)
n_ent.pack()
    
def mass ():
    n = int (n_ent.get())
    a = [randint(0,100) for i in range(n)]
    b = ' '.join(map(str, a))
    s=sum(a)
    maxx=max(a)
    minn=min(a)
    s_lbl.configure(text=s)
    maxx_lbl.configure(text=maxx)
    minn_lbl.configure(text=minn)
    tkMessageBox.showinfo('Вихідний масив', a)
    
but = Button(root, text='Результат', command=mass)
but.pack() 

lbl5 = Label(root, text='Сума елементів масива')
lbl5.pack()
s_lbl = Label(root, text='?') 
s_lbl.pack()
lbl6 = Label(root, text='Максимальний елемент')
lbl6.pack()
maxx_lbl = Label(root, text='?') 
maxx_lbl.pack()
lbl7 = Label(root, text='Мінімальний елемент')
lbl7.pack()
minn_lbl = Label(root, text='?') 
minn_lbl.pack()

root.mainloop ()

Генератор паролів. Використання модулів random, string.

# -*- coding: utf-8 -*-
from Tkinter import *
import random
import string
root=Tk()
root.title('Паролі')
root.geometry('250x120')
root.resizable(width=False, height=False) 
lbl1 = Label(root, text='Довжина пароля (від 8-ми символів)')
lbl1.pack()
n_ent = Entry(width=25,bg='white',justify=CENTER)
n_ent.pack()    
def pasw ():
    n = int (n_ent.get())
    if n<8:
        pas='pomulka'
    else:    
        pas = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for x in range(n)) 
    s_lbl.configure(text=pas)    
    
but = Button(root, text='Результат', command=pasw)
but.pack() 
lbl5 = Label(root, text='Пароль')
lbl5.pack()
s_lbl = Label(root, foreground ='red', font= (14),text='?') 
s_lbl.pack()
 
root.mainloop ()

Малювання будинка. Використання методу Canvas()

from Tkinter import * 
root = Tk ()
root.title ("Будинок")

cnv = Canvas(root, width=600, height=500, bg='lemonchiffon')# створюємо полотно
cnv.pack ()
cnv.create_rectangle(150, 150, 450, 450, fill='brown', outline='black', width=2)# створюємо стіни
cnv.create_polygon(150, 150, 300, 20, 450, 150, fill='burlywood', outline='black', width=2)# створюємо кришу
cnv.create_rectangle(300, 250, 400, 450, fill='chocolate', outline='black', width=2)# створюємо двері
cnv.create_rectangle(180, 200, 280, 300, fill='blue', outline='black', width=2)# створюємо вікно
cnv.create_line(180, 250, 280, 250, width=2)# створюємо лінії на вікні
cnv.create_line(230, 200, 230, 300, width=2)
cnv.create_oval(280, 80, 320, 120, fill='blue', outline='black', width=2)# створюємо кругле вікно

root.mainloop ()

Малювання Черепашкою. Використання модуля turtle.

from turtle import * 
from Tkinter import * 
root = Tk ()
root.title ("Малювання черепашкою")
root.geometry ("320x300")

def kvadrat ():
   shape ('turtle')
   color ('red')
   width(3)
   for i in range (4):
      forward (100)
      right (90)

def kolo ():
   shape ('turtle')
   color ('blue')
   width(3)
   circle (100)
   
def kytnuk ():
   shape ('turtle')
   color('orange')
   width(3)
   for z in range(8):
      fd(300/8)
      rt(360/8)  
   
lbl = Label(root, text="Tkinter i turtle", font="Arial 18")
lbl.pack()

btn1 = Button(root, text="Квадрат",  width=15, height=1, bg="red", fg="white", font="Arial", command=kvadrat)
btn1.pack()

lbl = Label(root, text="----", font="Arial 18")
lbl.pack()

btn2 = Button(root, text="Коло", width=15, height=1, bg="red", fg="white", font="Arial", command=kolo)
btn2.pack()

lbl = Label(root, text="----", font="Arial 18")
lbl.pack()

btn3 = Button(root, text="Багатокутник", width=15, height=1, bg="red", fg="white", font="Arial", command=kytnuk)
btn3.pack()

lbl = Label(root, text="----", font="Arial 18")
lbl.pack()

btn4 = Button(root, text="Вихід", width=15, height=1, bg="white", fg="red", font="Arial", command=root.destroy )
btn4.pack()

root.mainloop ()