Итак, я работал над небольшим количеством кода, который почти готов.Это простая программа с графическим интерфейсом, которая запускает конкретные уравнения на лету на основе входных данных.Благодаря пользователю на этом сайте (второй мировой войны) я могу использовать произвольный формат ввода чисел в предоставленном им коде.Последнее, что мне нужно сделать, это внедрить его код в мой, чтобы все это работало вместе.В моем коде есть 4 поля ввода, два из которых относятся к определенному местоположению на линии (здесь вводится пользовательский формат чисел) и два, которые относятся к измерениям из этих местоположений на линии в одну и ту же точку.После того, как все поля имеют данные, отображаются два результата.Одним из результатов является длина линии под прямым углом от линии.Вторым результатом является точное местоположение в строке для его размещения (именно здесь выводится пользовательский формат чисел).
Например, если я поместил места измерений в строку 120 и 140, с измерениями из этихместа 10 и 15, соответственно, я получаю результат 7,262 (длина линии под прямым углом от линии) и измерения 126,875.С кодом wwii, который мне помог, я хотел бы, чтобы в полях ввода 120 и 140, а в поле вывода 126,875 использовался числовой формат, который выглядел бы так: 1 + 20,00, 1 + 40,00 и 1 + 26,88.
Код wwii, который мне помог, выполняет прямое преобразование этих числовых форматов, но я хотел бы, чтобы эти поля ввода считывались и преобразовывались, когда он набирается как 1 + 20, и чтобы вычисление отображалосьв пользовательском формате, а также.
Я знаю, что это было долго, но я надеюсь, что это имеет смысл.Вот копия моего кода (не очень длинного) и кода, с которым мне помог wwii.Мне не понравилось, что я разделил на отдельные блоки кода, поэтому код wwii, который мне помог, добавлен внизу блока кода.
from tkinter import *
from math import *
def show_entry_fields():
try:
a, c, d, e, = float(e1.get()), float(e3.get()), float(e4.get()), float(e5.get())
b = e - d
s = (a + b + c) / 2
height = (sqrt (s * (s - a) * (s - b) * (s - c)) * 2) / b
height = float(format(height, '.3f'))
height_label['text'] = str(height)
side =((sqrt ((a ** 2) - (height ** 2))) + d)
side = float(format(side, '.3f'))
side_label['text'] = str(side)
except ValueError:
pass
master.after(100, show_entry_fields)
master = Tk()
master.attributes("-topmost", True)
master.title("Triangulation Plotting")
Label(master, text="Measurement #1 Station Line Location").grid(row=1, column=0, sticky=W, pady=4)
e4 = Entry(master)
e4.grid(row=1, column=1, sticky=E)
Label(master, text="Triangulation Measurement #1").grid(row=2, column=0, sticky=W, pady=4)
e1 = Entry(master)
e1.grid(row=2, column=1, sticky=E)
Label(master, text="Measurement #2 Station Line Location").grid(row=3, column=0, sticky=W, pady=4)
e5 = Entry(master)
e5.grid(row=3, column=1, sticky=E)
Label(master, text="Triangulation Measurement #2").grid(row=7, column=0, sticky=W, pady=4)
e3 = Entry(master)
e3.grid(row=7, column=1, sticky=E, pady=4)
Label(master, text="Offset from station line").grid(row=8, column=0, sticky=W, pady=4)
height_label = Label(master, text="")
height_label.grid(row=8, column=1)
Label(master, text="Measurement on Station Line").grid(row=9, column=0, sticky=W, pady=4)
side_label = Label(master, text="")
side_label.grid(row=9, column=1)
master.after(100,show_entry_fields)
master.mainloop()
Custom number format code from wwii:
def convert(thing):
if isinstance(thing, str):
a,b = thing.split('+')
b,*d = b.split('.')
d = '00' if not d else d[0]
thing = round(float(f'{a}{b}.{d}'), 2)
elif isinstance(thing, (int,float)):
thing = str(round(thing, 2))
thing,*d = thing.split('.')
d = '00' if not d else d[0]
thing = thing if len(thing) > 2 else '0'+thing
thing = f'{thing[:-2]}+{thing[-2:]}.{d}'
return thing
Заранее спасибо за любую помощь.