Прежде чем писать программу, к этому надо готовиться - получать все знания, которые нужны для её разработки. Как нельзя пятиэтажку построить, имея только молоток и гвозди, так нельзя и графическую программу написать, зная только о переменных и значениях.
формально что то у меня получилось, но много багов. Я просто не знаю правила написания.
я вот пишу:
button1 = Button(root1, text="Сложение", font=("Ubunte", 10), command=transfer)
button1.grid(row=6, columnspan=2, sticky="ew")
Вроде просто создаю кнопку, и привязываю команду.
вы пишите
self.frame_bottom = tk.Frame(self)
self.frame_bottom.pack(fill=BOTH)
я так понимаю это одно и тоже ? + -
from tkinter import *
from tkinter import messagebox
Inom = Ikz3max = Ikz2 = "нет данных"
def root01():
global Snom
global Unom
global cosf
global Xd
global Eg
root1 = Tk()
root1.geometry('200x200+100+100') #размер окна и координаты
root1.title('Расчет ТКЗ') #название окна
label0 = Label(root1, width=5, font=("Ubunte", 10), text='Г-1')
label0.grid(row=0, columnspan=2)
label1 = Label(root1, width=5, font=("Ubunte", 10), text='S, кВА')
label1.grid(row=1, column=0)
label2 = Label(root1, width=5, font=("Ubunte", 10), text='U, кВ')
label2.grid(row=2, column=0)
label3 = Label(root1, width=5, font=("Ubunte", 10), text='cosf')
label3.grid(row=3, column=0)
label4 = Label(root1, width=5, font=("Ubunte", 10), text='X"d')
label4.grid(row=4, column=0)
label5 = Label(root1, width=5, font=("Ubunte", 10), text='E"d')
label5.grid(row=5, column=0)
Snom = Entry(root1, width=10)
Snom.grid(row=1, column=1)
Unom = Entry(root1, width=10)
Unom.grid(row=2, column=1)
cosf = Entry(root1, width=10)
cosf.grid(row=3, column=1)
Xd = Entry(root1, width=10)
Xd.grid(row=4, column=1)
Eg = Entry(root1, width=10)
Eg.grid(row=5, column=1)
button1 = Button(root1, text="Сложение", font=("Ubunte", 10), command=transfer)
button1.grid(row=6, columnspan=2, sticky="ew")
def transfer():
global Snom
global Unom
global cosf
global Xd
global Eg
Snom = Snom.get()
try:
Snom = float(Snom)
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
Unom = Unom.get()
try:
Unom=float(Unom)
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
cosf = cosf.get()
try:
cosf=float(cosf)
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
Xd = Xd.get()
try:
Xd=float(Xd)
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
Eg = Eg.get()
try:
Eg=float(Eg)
except ValueError:
messagebox.showerror("Ошибка", "Должно быть введено число")
decision()
def decision():
global Inom
global Ikz3max
global Ikz2
Inom = round(Snom/(1.73*Unom), 2)
Ikz3max = round((Eg*Inom)/Xd, 2)
Ikz2 = round((Eg*1.73*Inom)/(Xd+Xd), 2)
write()
root.quit()
def write():
my_file = open("Результат.txt", "w")
my_file.write("Номинальная мощность генератора: " + str(Snom) + "кВА" + '\n')
my_file.write("Номинальный ток генератора: " + str(Inom) + "А" + '\n')
my_file.write("Ток трехфазного КЗ в t=0: " + str(Ikz3max) + "A" + '\n')
my_file.write("Ток двухфазного КЗ в t=0: " + str(Ikz2) + "A" + '\n')
my_file.close()
root = Tk()
root.geometry('150x150+0+0') #размер окна и координаты
root.title('Расчет') #название окна
label = Label(root, width=25, font=("Ubunte", 10), text='Расчет ТКЗ')
label.grid(row=0, columnspan=2)
btn1 = Button(root, text="Расчет", font=("Ubunte", 10), command=root01)
btn1.grid(row=1, column=0, sticky="ew")
root.mainloop()
Я наверное нарушил все правили написания)
Подскажите как сделать, что бы после расчета закрылось root01?
Есть способ сократить длину “кода”?
И еще, как на фон добавить картинку? гуглил, но не получилось ничего