Новичок
Джуниор
Регистрация: 20.10.2018
Сообщений: 2
|
Программа калькулятор в python
Начал писать прогу калькулятор, которая считает зп препода и тд, есть ошибки в коде, прошу помощи.
Код:
from tkinter import *
root = Tk()
root.title("Викладач")
Pari = 0 # Предмет: 0 - не обрано, 1 - ООП,
# 2 - Методи оптимізації, 3 - Якість ПЗ,
#4 - Засоби тестування.
# Ставка пари
s1, s2, s3, s4, = 50, 50, 50, 50.
#Доп ставка ( Перездача, Лабараторна )
f1, f2, f3, = 60, 50.
#Ставка екзамени ( Екзамен та Доп екзамен )
e1, e2, = 70, 70.
#Бонуси ( Виконав норму, Перевиконав норму )
b1, b2, = 20, 40.
#--------------------------------------------
# Користувацькі функції
# функції вибору предмету
def para1 (event):
global para
para = 1
def para2 (event):
global para
para = 2
def para3 (event):
global para
para = 3
def para4 (event):
global para
para = 4
# Вивід набору продуктів
def show() :
s=""
if para == 0:
s = "Пара не обрана"
else:
#створення строки з назвою пар
if para == 1: s= "ООП\n"
if para == 2: s= "Методи оптимізації\n"
if para == 3: s= "Якість ПЗ\n"
if para == 4: s= "Засоби тестування\n"
#Створення строки Доп ставка
if var_c1.get()==1:
if var_r1.get()==p1:
s+="Лабараторна\n"
else:
s+="Перездача\n"
else:
s+="Без доп пари\n"
#Створення строки Екзамени
if var_c2.get() == 1:
if var_r2.get() == e1:
s+="Екзамен\n"
if var_r2.get() == e2:
s+="Доп екзамен\n"
else:
s+="Без екзамену\n"
#строка виконання норми
if var_c3.get()==1:
if var_r3.get()==p1:
s+="Виконав норму\n"
else:
s+="Перевиконав норму\n"
else:
s+="Не виконав\n"
# Передаєм мітку 15 сформовану строку s
stroka.set(s)
# Розрахунок Заробітної плати
def calculator(event):
show() #виводим інфу про предмети
if para == 0 # якщо пара не вибрана не рахуємо
return
stavka = 0
# Початкове значення ставки залежить від пари
if para == 1: stavka = s1
if para == 1: stavka = s2
if para == 1: stavka = s3
if para == 1: stavka = s4
if var_c1.get()==1: # якщо доп пара обрана
stavka += var_r1.get()
if var_c2.get()==1: # якщо екзамен вибрано
stavka += var_r2.get()
if var_c3.get()==1: # якщо вибрана норма
stavka += var_r3.get()
# Добавляєм до напису клво ставки
s = str(stroka.get())
s = s + "\n" + str(stavka) + " Гривень."
stroka.set(s)
#Натискання кнопки О програмі
def about(event):
s = "Лабораторная работа №1\n"+\
"Выполнил:\nстудент гр. БС(2)18_д/122_М\nКірілюк М.А"
stroka.set(s)
stavka=0
#----------------------------------------------------------
# Створення віджетів
# Мітки
l1 = Label(root, text="Label 1", bg="pale green", bd=0)
l2 = Label(root, text="Label 2", bg="pale green", bd=0)
l3 = Label(root, text="Label 3", bg="pale green", bd=0)
l4 = Label(root, text="Label 4", bg="pale green", bd=0)
stroka = StringVar()
stroka.set("")
l5 = Label(root, textvariable=stroka, bg="white", bd=0,
font="Courier 18 bold", height=9, width=30)
#Кнопки з назвою пар (в середині мітки11)
b1 = Button(l1, text="ООП", font="Arial 20 bold",
bg="gray64", activebackground="Goldenrod1")
b2 = Button(l1, text="Методи оптимізації", font="Arial 20 bold",
bg="gray64", activebackground="Goldenrod1")
b3 = Button(l1, text="Якість ПЗ", font="Arial 20 bold",
bg="gray64", activebackground="Goldenrod1")
b4 = Button(l1, text="Засоби тестування", font="Arial 20 bold",
bg="gray64", activebackground="Goldenrod1")
# Привязка кнопок пар к собитиям
b1.bind("<Button-1>", para1)
b2.bind("<Button-1>", para2)
b3.bind("<Button-1>", para3)
b4.bind("<Button-1>", para4)
#Чек бокс для доп cтавки
var_c1 = IntVar()
var_c1.set(0)
c1 = Checkbutton(l2, text="Доп Ставка", font="Arial 14",
bg="Skyblue1", variable=var_c1,
onvalue=1, offvalue=0)
# Радіо кнопки для вибора доп ставка (в середені мітки 12)
var_r1 = IntVar()
var_r1.set(p1)
r11 = Radiobutton(l2, text="Лабораторна", font="Arial 10",
bg="plum1", variable=var_r1, value=p1)
r12 = Radiobutton(l2, text="Перездача", font="Arial 10",
bg="snow4", variable=var_r1, value=p2)
#Чек бокс для вибора cтавки екзамена
var_c2 = IntVar()
var_c2.set(0)
c2 = Checkbutton(l3, text="Напиток", font="Arial 14",
bg="Skyblue1", variable=var_c2,
onvalue=1, offvalue=0)
#Радіокнопка для вибора Ставки екзамена
var_r2 = IntVar()
var_r2.set(d1)
r21 = Radiobutton(l3, text="Екзамен", font="Arial 10",
variable=var_r2, value=d1,
bg="snow4", width=7)
r22 = Radiobutton(l3, text="Доп Екзамен", font="Arial 10",
variable=var_r2, value=d2,
bg="plum1", width=7)
#Чекбокс для бонуси
var_c3 = IntVar()
var_c3.set(0)
c3 = Checkbutton(l4, text="Соус", font="Arial 14",
bg="Skyblue1", variable=var_c3,
onvalue=1, offvalue=0)
# Радіокнопка для вибока бонуса
var_r3 = IntVar()
var_r3.set(s1)
r31 = Radiobutton(l4, text="Виконав норму", font="Arial 10",
variable=var_r3, value=s1,
bg="plum1", width=7)
r32 = Radiobutton(l4, text="Перевиконав норму", font="Arial 10",
variable=var_r3, value=s2,
bg="snow4", width=7)
#Кнопка для розрахунку ставки
b6 = Button(root, text="Рассчитать калории",
font="Arial 24 bold", bg="red2", activebackground="red1",
fg="white", activeforeground="white")
b6.bind("<Button-1>", calculator
#Конопка о програме
b7 = Button(root, text="О программе",
font="Arial 8", bg="pale green", activebackground="khaki2")
b7.bind("<Button-1>", about)
#Упаковка віджетів
l1.pack(side=LEFT, expand=1, fill=BOTH)
l2.pack(side=TOP, expand=1, fill=BOTH)
l3.pack(side=TOP, expand=1, fill=BOTH)
l4.pack(side=TOP, expand=1, fill=BOTH)
l5.pack(side=TOP, expand=1, fill=BOTH)
b1.pack(side=TOP, expand=1, fill=BOTH)
b2.pack(side=TOP, expand=1, fill=BOTH)
b3.pack(side=TOP, expand=1, fill=BOTH)
b4.pack(side=TOP, expand=1, fill=BOTH)
b5.pack(side=TOP, expand=1, fill=BOTH)
c1.pack(side=TOP, expand=1, fill=BOTH)
r11.pack(side=LEFT, expand=1, fill=X)
r12.pack(side=LEFT, expand=1, fill=X)
c2.pack(side=TOP, expand=1, fill=BOTH)
r21.pack(side=LEFT, expand=1, fill=X)
r22.pack(side=LEFT, expand=1, fill=X)
r23.pack(side=LEFT, expand=1, fill=X)
c3.pack(side=TOP, expand=1, fill=BOTH)
r31.pack(side=LEFT, expand=1, fill=X)
r32.pack(side=LEFT, expand=1, fill=X)
r33.pack(side=LEFT, expand=1, fill=X)
b6.pack(side=TOP, expand=1, fill=BOTH)
b7.pack(side=LEFT, expand=1, fill=BOTH)
root.mainloop()
_____
Код программы нужно выделять (форматировать) тегами [CODE][/CODE] (читать FAQ)
Модератор
Последний раз редактировалось Serge_Bliznykov; 29.10.2018 в 16:13.
|