-Умовні оператори (коротка та повна форма). Складання програм на розгалуження

-Властивості та методи елементів керування. Прапорець, перемикач

Ви вже знаєте, що для опису алгоритмів з розгалуженням мовою програмування Python використовують команди:

- неповного розгалуження, 

-повного розгалуження 

-та вибору

Пригадати:

t=int(input("Температура води t ="))

if t<0:

   print ("лід")

elif t>100:

   print("пара")

else:

   print("рідина")


Реалізація цієї задачі у вікні з графічним інтерфейсом

import tkinter

def btnClick():

    print("Button pressed...")

    t=int(message.get())

    txt["text"]="str(t)"

    if (t<0):

                    txt["text"]="При температурі ="+str(t)+"градусів, отримали лід"

    elif (t>100):

                    txt["text"]="При температурі ="+str(t)+"градусів, отримали пару"

    else:

                   txt["text"]="При температурі ="+str(t)+"градусів, отримали рідину"

root=tkinter.Tk()

root.geometry("500x200")

root.title("Агрегатний стан води")

root["bg"]="yellow"

root.resizable(0,0)

txt=tkinter.Label(root,text="Введіть температуру за цельсієм",

              font="Arial 16", bg="white")

txt.pack()

message=tkinter.Entry(root,font="Arial 16",

        fg="blue",bg="light grey",width=15)

message.pack()

btn=tkinter.Button(root,text="Визначити",

                font="Arial 16", bg="light green",command=btnClick)

btn.pack()

root.mainloop()

import tkinter as tk

def btnClick():

    print("Button pressed...")

    t=int(message.get())

    txt["text"]="str(t)"

    if (t<0):

                    txt["text"]="При температурі ="+str(t)+"градусів, отримали лід"

    elif (t>100):

                    txt["text"]="При температурі ="+str(t)+"градусів, отримали пару"

    else:

                   txt["text"]="При температурі ="+str(t)+"градусів, отримали рідину"

root=tk.Tk()

root.geometry("500x200")

root.title("Агрегатний стан води")

root["bg"]="yellow"

root.resizable(0,0)

txt=tk.Label(root,text="Введіть температуру за цельсієм",

              font="Arial 16", bg="white")

txt.pack()

message=tk.Entry(root,font="Arial 16",

        fg="blue",bg="light grey",width=15)

message.pack()

btn=tk.Button(root,text="Визначити",

                font="Arial 16", bg="light green",command=btnClick)

btn.pack()

root.mainloop()

Зміни у програмі можна реалізувати двома способами обирайте на власне розуміння!

Або      txt["text"]="str(t)"

Або      txt.config(text=str(t))

txt - об'єкт, який змінюємо

text - параметр, який змінюємо

"str(t)" - на що змінюємо

Розглянемо, як реалізувати за допомогою команд розгалуження, ділення на 0.

from tkinter import*

from tkinter import messagebox   #під'єднали модуль  інформаційних вікон

def btnClick():                                            #прописуємо функцію btnClick, яка виконується при натисканні ЛКМ

    n=int(edit.get())                                    #прописуємо функцію btnClick, яка виконується при натисканні ЛКМ

    if n==0:                                                      #застосували команду повного розгалуження

        messagebox.showerror("Увага!","На нуль ділити не можна!")    #метод підключення вікна - попередження

    else:

        n=100/n

        txt.config(text="Частка="+str(n))     #зміна напису txt другим способом, за допомогою методу .config

        messagebox.showinfo("Увага!","Обчислення виконано!")           #метод підключення вікна - інформаційного

root=Tk()                                              #під'єднали модуль  вікон

root.geometry("500x200")       #налаштували розміри вікна

root.title("Діалог про нуль")   #назвали вікно

root["bg"]="yellow"                       #колір вікна

root.resizable(0,0)                         # вікно не можна розтягувати 

txt=Label(root,text="Введіть число",          #створили текстовий напис, зміст якого потім змінити за умовою 

              font="Arial 16", bg="white")

txt.pack()                                                                         #розмістили текстовий напис у вікні

edit=Entry(root,font="Arial 16",                      #створили поле введення, в яке введіть дільник

        fg="blue",bg="light grey",width=15)

edit.pack()                                                                    #розмістили поле введення  у вікні

btn=Button(root,text="Визначити",         #кнопка : до події; при натисканні ЛКМ виконати   функцію btnClick

                font="Arial 16", bg="light green",command=btnClick)

btn.pack()                                                                   #розмістили кнопку у вікні

root.mainloop()

Завдання 1. 

Визначити чи буде трикутник рівностороннім. Але трикутник не завжди ІСНУЄ!!!

Необхідно передбачити це. Коли користувач вводить не коректні дані потрібне сповіщення: це не трикутник!

Написати цю програму для вікна з графічним інтерфейсом

2202_task

a=int(input("Введіть сторону a = "))

b=int(input("Введіть сторону b = "))

c=int(input("Введіть сторону c = "))

if a>c +b or b>a+c or c>b+a:

    print("не є трикутником")

elif a=b and b=c:

    print("трикутник рівносторонній")

else:

    print("трикутник не рівносторонній")

У програмах з графічним інтерфейсом для роботи з логічними змінними використовують елементи управління прапорець і перемикач.

Завдання 2

Перефарбувати вікно у будь-які чотири кольори веселки.(4 перемикачі, ще один elif додати і відповідні зміни)

Завдання 3

Дописати ще слово: Україно!

Дописати коди.

from tkinter import*

from tkinter.ttk import* 

def btnPress():

    if t.get()==1:

        root["bg"]="red"

    elif t.get()==2:

        root["bg"]="yellow"

    else:

        root["bg"]="green"

root=Tk()

root.geometry("500x200")

root.title("Кольори")

t=IntVar()

chk1=Radiobutton(root,text="Чекати",variable=t,value=1)

chk2=Radiobutton(root,text="Увага", variable=t,value=2)

chk3=Radiobutton(root,text="Йдіть", variable=t,value=3)

btn=Button(root,text="Визначити",command=btnPress)

chk1.pack()

chk2.pack()

chk3.pack()

btn.pack()

root.mainloop()

Radiobutton, або перемикач, — елемент списку з місцем для мітки за умови можливості виставити лише одну мітку. Перемикач завжди використовують у групі, причому увімкненим може бути лише один перемикач.

Тут:

variable — властивість, що описує прикріплення до елемента

керування змінної;

value, значення змінної, якщо обрали саме цю опцію

2202_1_task


from tkinter import*

from tkinter.ttk import* 

def btnClick():

    show=""

    if t1.get():

        show+=chk1["text"]+"-"

    if t2.get():

        show+=chk2["text"]+"-"

    if t3.get():

        show+=chk3["text"]+"!"

    txt.config(text=show)

root=Tk()

root.geometry("360x200")

root.title("Привітання")

t1=BooleanVar()

t2=BooleanVar()

t3=BooleanVar()

chk1=Checkbutton(root,text="Щіро",variable=t1)

chk2=Checkbutton(root,text="Вітаю", variable=t2)

chk3=Checkbutton(root,text="зі святом", variable=t3)

btn=Button(root,text="Привітання",command=btnClick)

txt=Label(root,text="Нічого не обрано.")

chk1.pack()

chk2.pack()

chk3.pack()

btn.pack()

txt.pack()

root.mainloop()


Checkbutton, або прапорець, — елемент списку з місцем для мітки.

Значення кожної мітки (прапорця) пов’язане зі своєю змінною. Значення цієї змінної визначається властивістю onvalue (ввімкнено) і off value (вимкнено). При використанні кількох елементів списку потрібно для кожного використати свою змінну.

2202_task_2