doza_and
под сбросом переменных я подразумевал их возвращение к значениям по умолчанию. Хотя Возможно это и не критично в данном коде, но всё таки хотелось бы знать как это можно реализовать.
"""файл main.py"""
from tkinter import *
import tkinter.ttk as ttk
frm_bg = "#cecece"
root = Tk()
root.title("R-Calc")
root.geometry('600x300+700+50')
root.resizable(False, False)
u = 0
r = 0
i = 0
def choiceF():
"""настраивает внешний вид калькулятора под выбранную формулу"""
if var.get() == 0:
label2['text'] = "I=U/R"
label3['text'] = "U="
label4['text'] = "R="
label5['text'] = "I="
label8['text'] = "Вольт"
label9['text'] = "Ом"
label10['text'] = "Ампер"
u = a
r = b
elif var.get() == 1:
label2['text'] = "U=I*R"
label3['text'] = "I="
label4['text'] = "R="
label5['text'] = "U="
label8['text'] = "Ампер"
label9['text'] = "Ом"
label10['text'] = "Вольт"
i = a
r = b
elif var.get() == 2:
label2['text'] = "R=U/I"
label3['text'] = "U="
label4['text'] = "I="
label5['text'] = "R="
label8['text'] = "Вольт"
label9['text'] = "Ампер"
label10['text'] = "Ом"
u = a
i = b
def takeValues():
if var.get() == 0:
tok()
elif var.get() == 1:
napr()
elif var.get() == 2:
res()
def tok():
"""расчеты по первой формуле"""
a = ent1.get()
b = ent2.get()
u = float(a)
r = float(b)
x = u / r
if 1000 < x < 1000000:
x = x / 1000
label10['text'] = "килоАмпер"
elif 0.001 < x < 1:
x = x * 1000
label10['text'] = "миллиАмпер"
elif 0.000001 < x < 0.001:
x = x / 10 ** 6
label10['text'] = "микроАмпер"
label7['text'] = round(x, 4)
def napr():
"""расчеты по второй формуле"""
a = float(ent1.get())
b = float(ent2.get())
i = float(a)
r = float(b)
label7['text'] = round(a * b, 4)
def res():
"""расчеты по третьей формуле"""
a = ent1.get()
b = ent2.get()
u = float(a)
i = float(b)
label7['text'] = round(u / i, 4)
def resetCalc():
"""очистка значений для повторного расчета"""
pass
# расстановка и описание лейблов
label1 = Label(root, text="Выбите ниже нужный вариант \n формулы и нажмите «выбрать»")
label1.place(x=20, y=30)
label2 = Label(root, text="I=U/R", font="arial 16")
label2.place(x=320, y=160)
label3 = Label(root, text="".rjust(4), font="arial 16")
label3.place(x=235, y=65)
label4 = Label(root, text="".rjust(4), font="arial 16")
label4.place(x=235, y=95)
label5 = Label(root, text="".rjust(4), font="arial 16")
label5.place(x=235, y=125)
label6 = Label(root, text="Введите известные значения \n и нажмите «расчитать»")
label6.place(x=240, y=30)
label7 = Label(root, text="0".rjust(20), bg="#FCD9B6", font="arial 12")
label7.place(x=280, y=128)
label8 = Label(root, text="", font="arial 12")
label8.place(x=370, y=65)
label9 = Label(root, text="", font="arial 12")
label9.place(x=370, y=97)
label10 = Label(root, text="", font="arial 12")
label10.place(x=370, y=130)
# расстановка окон для ввода значений
a = IntVar()
b = IntVar()
ent1 = ttk.Entry(root, width=12, textvariable=a)
ent1.place(x=280, y=67)
ent2 = ttk.Entry(root, width=12, textvariable=b)
ent2.place(x=280, y=98)
# установка элемента radioButton
var = IntVar()
var.set(0)
rb1 = Radiobutton(text="ищем I по формуле: I=U/R", variable=var, value=0)
rb1.place(x=20, y=80)
rb2 = Radiobutton(text="ищем U по формуле: U=I*R", variable=var, value=1)
rb2.place(x=20, y=100)
rb3 = Radiobutton(text="ищем R по формуле: R=U/I", variable=var, value=2)
rb3.place(x=20, y=120)
# расстановка и назначение действий кнопок
button1 = Button(text="Выбрать ", font="arial 10", command=choiceF)
button1.place(x=30, y=160)
button2 = Button(text="Рассчитать - ", font="arial 10", command=takeValues)
button2.place(x=220, y=160)
button3 = Button(text="Очистить\n/ввести новые\n значения", font="arial 10", height=3, command=resetCalc)
button3.place(x=450, y=60)
root.mainloop()
вот код, возможно так будет немного понятнее.