Не могу сделать красивый и локаничный интерфейс

SodaAdis

Новичок
Пользователь
Май 29, 2024
1
0
1
Python:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad
import tkinter as tk
from tkinter import ttk


# Функция для расчета с использованием scipy.quad
def calculate_capacity_quad(U, T):
    I0 = U / 1000
    tau = T / 6
    integrand = lambda t: I0 * np.exp(-t / tau)
    integral, _ = quad(integrand, 0, T)
    C = integral / U
    return C


# Функция для расчета методом трапеций
def calculate_capacity_trapezoidal(U, T, n=1000):
    I0 = U / 1000
    tau = T / 6
    h = T / n
    t_values = np.linspace(0, T, n + 1)
    i_values = I0 * np.exp(-t_values / tau)
    integral = (h / 2) * np.sum(i_values[:-1] + i_values[1:])
    C = integral / U
    return C


# Построение графика
def plot_current(U, T):
    I0 = U / 1000
    tau = T / 6
    t_values = np.linspace(0, T, 1000)
    i_values = I0 * np.exp(-t_values / tau)
    plt.figure()
    plt.plot(t_values, i_values)
    plt.xlabel('Время (s)')
    plt.ylabel('Ток (A)')
    plt.title('Разряд тока с течением времени')
    plt.grid(True)
    plt.show()


# Функция для расчета и отображения результата
def calculate():
    U = float(entry_U.get())
    T = float(entry_T.get())
    method = method_var.get()
    if method == 'scipy.quad':
        C = calculate_capacity_quad(U, T)
    else:
        C = calculate_capacity_trapezoidal(U, T)
    result_label.config(text=f'Расчетная мощность: {C:.6e} F')
    plot_current(U, T)


# Создание интерфейса
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox

# ... (остальной код, функции calculate_capacity_quad, calculate_capacity_trapezoidal, plot_current) ...

def calculate():
    try:
        U = float(entry_U.get())
        T = float(entry_T.get())
        method = method_var.get()
        if method == 'scipy.quad':
            C = calculate_capacity_quad(U, T)
        else:
            C = calculate_capacity_trapezoidal(U, T)
        result_label.config(text=f'Емкость: {C:.6e} Ф')
        plot_current(U, T)
    except ValueError:
        messagebox.showerror("Ошибка", "Некорректные данные ввода")

# Создание интерфейса
root = tk.Tk()
root.title('Вычислитель емкости конденсатора')

# Фрейм для ввода данных
input_frame = tk.Frame(root)
input_frame.pack(pady=10)

tk.Label(input_frame, text='Напряжение U (В):').grid(row=0, column=0, padx=5)
entry_U = tk.Entry(input_frame)
entry_U.grid(row=0, column=1, padx=5)

tk.Label(input_frame, text='Время разряда T (с):').grid(row=1, column=0, padx=5)
entry_T = tk.Entry(input_frame)
entry_T.grid(row=1, column=1, padx=5)

# Фрейм для выбора метода
method_frame = tk.Frame(root)
method_frame.pack(pady=10)

tk.Label(method_frame, text='Метод расчета:').grid(row=0, column=0, padx=5)
method_var = tk.StringVar(value='scipy.quad')
method_menu = ttk.Combobox(method_frame, textvariable=method_var, values=['scipy.quad', 'trapezoidal'])
method_menu.grid(row=0, column=1, padx=5)

# Кнопка "Вычислить"
calc_button = tk.Button(root, text='Вычислить', command=calculate, width=10)
calc_button.pack(pady=10)

# Метка для отображения результата
result_label = tk.Label(root, text='Емкость:', font=("TkDefaultFont", 12))
result_label.pack()

root.mainloop()

Взял код интерфейса у друга, но нужно что-то индивидуальное и не сложное

Python 3.12.3
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 639
472
83
но нужно что-то индивидуальное и не сложное
а что именно?
 

Форум IT Специалистов