Tkinter

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
С помощью Tkinter создается приложение на ПК. Идея заключается в том, чтобы создать главное окно, в котором есть пару кнопок, нажимая на которые открываются следующие и в каждой решается определенная задача. Как заполнить такие окна? Это должен быть отдельный файл? Или можно как-то все прописать в одном файле? Спасибо
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
можно прописать в одном файле
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
вставьте код как код, соблюдая отступы, подробнее тут как задать вопрос
 

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
Во втором окне хотелось разместить вот это .... пожалуйста посмотрите совсем запутались и не можем найти выхода
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
Во втором окне хотелось разместить вот это .... пожалуйста посмотрите совсем запутались и не можем найти выхода
и что вот это, я не понял
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
вы нормально код можете вставить? мне отступы угадывать? ТАМ ЕСТЬ КАК ВСТАВИТЬ КОД -> как задать вопрос
 

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
Python:
from tkinter import *
from tkinter import ttk
from tkinter.ttk import Combobox
from tkinter.messagebox import showerror
import math

window = Tk()
window.title('Расчёт площади нагретой части пласта в одном элементе системы расстановки скважин')
window.geometry(f'650x620+10+10')
window.resizable(False, False)

frame = ttk.Frame(window, padding=(650, 620, 10, 10))

# Создание переменных для параметров

temp_zak = StringVar(value='287.7')
period_zak = StringVar(value="1")
step_suh = StringVar(value="0.6")
tepl_ispar = StringVar(value="1250")
teploem_voda = StringVar(value="4.2")
t_para = StringVar(value="340")
h_plasta = StringVar(value="45")
ohvat_h_plasta = StringVar(value="0.8")
t0_plasta = StringVar(value="25")
teploprov_pl = StringVar(value="2.205")
teploprov_op = StringVar(value="2.205")
plot_pl = StringVar(value="2600")
plot_op = StringVar(value="2600")
teploem_pl = StringVar(value="0.85")
teploem_op = StringVar(value="0.85")
ploshad = StringVar()

ei_temp_zak = StringVar(value="т/сут")
ei_period_zak = StringVar(value="год")
ei_tepl_ispar = StringVar(value="кДж/кг")
ei_teploem_voda = StringVar(value="кДж/кг*К")
ei_t_para = StringVar(value="0С")
ei_h_plasta = StringVar(value="м")
ei_t0_plasta = StringVar(value="0С")
ei_teploprov_pl = StringVar(value="Вт/м*К")
ei_teploprov_op = StringVar(value="Вт/м*К")
ei_teploem_pl = StringVar(value="кДж/кг*К")
ei_teploem_op = StringVar(value="кДж/кг*К")


def calculate(*args):
    try:
        if ei_temp_zak.get() == 'т/сут':
            temp_zak1 = (float(temp_zak.get()*1000)/24*60*60)
        else:
            temp_zak1 = float(temp_zak.get())

        if ei_period_zak.get() == 'сут':
            period_zak1 = float(period_zak.get())*24*60*60
        elif ei_period_zak.get() == 'мес':
            period_zak1 = float(period_zak.get())*30.416*24*60*60
        else:
            period_zak1 = float(period_zak.get())*365*24*60*60

        if ei_tepl_ispar.get() == 'кДж/кг':
            tepl_ispar1 = float(tepl_ispar.get())
        else:
            tepl_ispar1 = float(tepl_ispar.get()*1000)

        if ei_teploem_voda.get() == 'кДж/(кг*К)':
            teploem_voda1 = float(teploem_voda.get())
        else:
            teploem_voda1 = float(teploem_voda.get())*1000

        if ei_t_para.get() == '0C':
            t_para1 = float(t_para.get())
        else:
            t_para1 = float(t_para.get())-273

        if ei_h_plasta.get() == 'см':
            h_plasta1 = float(h_plasta.get())*100
        elif ei_h_plasta.get() == 'м':
            h_plasta1 = float(h_plasta.get())
        else:
            h_plasta1 = float(h_plasta.get()/1000)

        if ei_t0_plasta.get() == '0C':
            t0_plasta1 = float(t0_plasta.get())
        else:
            t0_plasta1 = float(t0_plasta.get())-273

        if ei_teploprov_pl.get() == 'Вт/м*К':
            teploprov_pl1 = float(teploprov_pl.get())/1000
        else:
            teploprov_pl1 = float(teploprov_pl.get())

        if ei_teploprov_op.get() == 'Вт/м*К':
            teploprov_op1 = float(teploprov_op.get()) / 1000
        else:
            teploprov_op1 = float(teploprov_op.get())

        if ei_teploem_pl.get() == 'кДж/кг*К':
            teploem_pl1 = float(teploem_pl.get())
        else:
            teploem_pl1 = float(teploem_pl.get())*1000

        if ei_teploem_op.get() == 'кДж/кг*К':
            teploem_op1 = float(teploem_op.get())
        else:
            teploem_op1 = float(teploem_op.get())*1000

        delta_t = t_para1-t0_plasta1

        tau = (4 * teploprov_op1 * teploem_op1 * float(plot_op.get()) * period_zak1) \
            / (h_plasta1 ** 2 * float(ohvat_h_plasta.get()) ** 2 * teploem_pl1 ** 2 * float(plot_pl.get())) ** 2

        temp_podachi_vplast = (temp_zak1 * float(step_suh.get()) * tepl_ispar1) + (temp_zak1 * teploem_voda1 * delta_t)

        pl_progret = (temp_podachi_vplast * h_plasta1 * float(ohvat_h_plasta.get())
                      * teploem_pl1 * float(plot_pl.get())) * (math.exp(tau) * math.erfc(math.sgrt(tau)) + 2
                                                               * math.sgrt(tau/math.pi)-1) \
            / (delta_t * 4 * teploprov_op1 * teploem_op1 * float(plot_op.get()))

        ploshad.set(f'{pl_progret:.3f}')

    except ValueError:
        showerror("Title", "Исходные параметры введены некорректно!")
        pass
 

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
Python:
frame.grid(column=0, row=0, sticky=(N, S, E, W))


# Создание и размещение Label для наименований переменных

label_temp_zak = Label(window, text="Темп закачки пара в нагнетательную скважину", font='Times 10')
label_temp_zak.grid(column=0, row=0, sticky=E, pady=5, padx=10)
label_period_zak = Label(window, text="Период закачки", font='Times 10')
label_period_zak.grid(column=0, row=1, sticky=E, pady=4, padx=10)
label_step_suh = Label(window, text="Степень сухости пара на забое нагнетательной скважины", font='Times 10')
label_step_suh.grid(column=0, row=2, sticky=E, pady=4, padx=10)
label_tepl_ispar = Label(window, text="Скрытая теплота испарения", font='Times 10')
label_tepl_ispar.grid(column=0, row=3, sticky=E, pady=4, padx=10)
label_teploem_voda = Label(window, text="Теплоемкость горячей воды", font='Times 10')
label_teploem_voda.grid(column=0, row=4, sticky=E, pady=4, padx=10)
label_t_para = Label(window, text="Температура пара", font='Times 10').grid(column=0, row=5, sticky=E, pady=4, padx=10)
label_h_plasta = Label(window, text="Толщина пласта", font='Times 10').grid(column=0, row=6, sticky=E, pady=4, padx=10)
label_ohvat_h_plasta = Label(window, text="Коэффициент охвата пласта процессом по толщине", font='Times 10')
label_ohvat_h_plasta.grid(column=0, row=7, sticky=E, pady=4, padx=10)
label_t0_plasta = Label(window, text="Начальная температура пласта", font='Times 10')
label_t0_plasta.grid(column=0, row=8, sticky=E, pady=4, padx=10)
label_teploprov_pl = Label(window, text="Теплопроводность пласта", font='Times 10')
label_teploprov_pl.grid(column=0, row=9, sticky=E, pady=4, padx=10)
label_teploprov_op = Label(window, text="Теплопроводность окружающих пород", font='Times 10')
label_teploprov_op.grid(column=0, row=10, sticky=E, pady=4, padx=10)
label_plot_pl = Label(window, text="Плотность пласта", font='Times 10')
label_plot_pl.grid(column=0, row=11, sticky=E, pady=4, padx=10)
label_plot_op = Label(window, text="Плотность окружающих пород", font='Times 10')
label_plot_op.grid(column=0, row=12, sticky=E, pady=4, padx=10)
label_teploem_pl = Label(window, text="Теплоемкость пласта", font='Times 10')
label_teploem_pl.grid(column=0, row=13, sticky=E, pady=4, padx=10)
label_teploem_op_op = Label(window, text="Теплоемкость окружающих пород", font='Times 10')
label_teploem_op_op.grid(column=0, row=14, sticky=E, pady=4, padx=10)
label_ploshad = Label(window, text="Площадь нагретой части пласта", font='Times 15')
label_ploshad.grid(column=0, row=16, sticky=E, padx=10)

convert_button = Button(window, text='Рассчитать', font='Times 12')
convert_button.grid(column=1, row=15, sticky=(W, E), pady=30, padx=35)
close_button = Button(window, text='Закрыть', font='Times 12').grid(column=2, row=15, sticky=W, padx=35)

# Создание и размещение entry для ввода значений переменных

entry_temp_zak = Entry(window, width=12, textvariable=temp_zak)
entry_temp_zak.grid(row=0, column=1, sticky=(W, E), pady=3.5, padx=15)

entry_period_zak = Entry(window, width=12, textvariable=period_zak)
entry_period_zak.grid(column=1, row=1, sticky=(W, E), pady=3.5, padx=15)

entry_step_suh = Entry(window, width=12, textvariable=step_suh).grid(column=1, row=2, sticky=(W, E), pady=3.5, padx=15)
entry_tepl_ispar = Entry(window, width=12, textvariable=tepl_ispar)
entry_tepl_ispar.grid(column=1, row=3, sticky=(W, E), pady=3.5, padx=15)

entry_teploem_voda = Entry(window, width=12, textvariable=teploem_voda)
entry_teploem_voda.grid(column=1, row=4, sticky=(W, E), pady=3.5, padx=15)

entry_t_para = Entry(window, width=12, textvariable=t_para)
entry_t_para.grid(column=1, row=5, sticky=(W, E), pady=3.5, padx=15)

entry_h_plasta = Entry(window, width=12, textvariable=h_plasta)
entry_h_plasta.grid(column=1, row=6, sticky=(W, E), pady=3.5, padx=15)

entry_ohvat_h_plasta = Entry(window, width=12, textvariable=ohvat_h_plasta)
entry_ohvat_h_plasta.grid(column=1, row=7, sticky=(W, E), pady=3.5, padx=15)

entry_t0_plasta = Entry(window, width=12, textvariable=t0_plasta)
entry_t0_plasta.grid(column=1, row=8, sticky=(W, E), pady=3.5, padx=15)

entry_teploprov_pl = Entry(window, width=12, textvariable=teploprov_pl)
entry_teploprov_pl.grid(column=1, row=9, sticky=(W, E), pady=3.5, padx=15)

entry_teploprov_op = Entry(window, width=12, textvariable=teploprov_op)
entry_teploprov_op.grid(column=1, row=10, sticky=(W, E), pady=3.5, padx=15)

entry_plot_pl = Entry(window, width=12, textvariable=plot_pl)
entry_plot_pl.grid(column=1, row=11, sticky=(W, E), pady=3.5, padx=15)

entry_plot_op = Entry(window, width=12, textvariable=plot_op)
entry_plot_op.grid(column=1, row=12, sticky=(W, E), pady=3.5, padx=15)

entry_teploem_pl = Entry(window, width=12, textvariable=teploem_pl)
entry_teploem_pl.grid(column=1, row=13, sticky=(W, E), pady=3.5, padx=15)

entry_teploem_op = Entry(window, width=12, textvariable=teploem_op)
entry_teploem_op.grid(column=1, row=14, sticky=(W, E), pady=3.5, padx=15)

# Создание и размещение combobox для ввода единиц измерения

ed_ism_temp_zak = Combobox(window, state="readonly", width=12, values=('кг/с', 'т/сут'), textvariable=ei_temp_zak)
ed_ism_temp_zak.grid(column=2, row=0, padx=10, sticky=(W, E))

ed_ism_period_zak = Combobox(window, state="readonly", width=12, values=('сут', 'мес', 'год'),
                             textvariable=ei_period_zak)
ed_ism_period_zak.grid(column=2, row=1, padx=10, sticky=(W, E))

ed_ism_tepl_ispar = Combobox(window, state="readonly", width=12, values=('Дж/кг', 'кДж/кг'), textvariable=ei_tepl_ispar)
ed_ism_tepl_ispar.grid(column=2, row=3, padx=10, sticky=(W, E))

ed_ism_teploem_voda = Combobox(window, state="readonly", width=12, values=('Дж/(кг*K)', 'кДж/(кг*K'),
                               textvariable=ei_teploem_voda)
ed_ism_teploem_voda.grid(column=2, row=4, padx=10, sticky=(W, E))

ed_ism_t_para = Combobox(window, state="readonly", width=12, values=('0C', 'K'), textvariable=ei_t_para)
ed_ism_t_para.grid(column=2, row=5, padx=10, sticky=(W, E))

ed_ism_h_plasta = Combobox(window, state="readonly", width=12, values=('см', 'м', 'км'), textvariable=ei_h_plasta)
ed_ism_h_plasta.grid(column=2, row=6, padx=10, sticky=(W, E))

ed_ism_t0_plasta = Combobox(window, state="readonly", width=12, values=('0С', 'К'), textvariable=ei_t0_plasta)
ed_ism_t0_plasta.grid(column=2, row=8, padx=10, sticky=(W, E))

ed_ism_teploprov_pl = Combobox(window, state="readonly", width=12, values=('Вт/(м*К)', 'кВт/(м*К)'),
                               textvariable=ei_teploprov_pl)
ed_ism_teploprov_pl.grid(column=2, row=9, padx=10, sticky=(W, E))

ed_ism_teploprov_op = Combobox(window, state="readonly", width=12, values=('Вт/(м*К)', 'кВт/(м*К)'),
                               textvariable=ei_teploprov_op)
ed_ism_teploprov_op.grid(column=2, row=10, padx=10, sticky=(W, E))

ed_ism_plot_pl = Label(window, width=12, text='кг/м3')
ed_ism_plot_pl.grid(column=2, row=11, padx=10, sticky=(W, E))

ed_ism_plot_op = Label(window, width=12, text='кг/м3').grid(column=2, row=12, padx=10, sticky=(W, E))
ed_ism_teploem_pl = Combobox(window, state="readonly", width=12, values=('Дж/(кг*К)', 'кДж/(кг*К)'),
                             textvariable=ei_teploem_pl)
ed_ism_teploem_pl.grid(column=2, row=13, padx=10, sticky=(W, E))

ed_ism_teploem_op = Combobox(window, state="readonly", width=12, values=('Дж/(кг*K)', 'кДж/(кг*K'),
                             textvariable=ei_teploem_op)
ed_ism_teploem_op.grid(column=2, row=14, padx=10, sticky=(W, E))

ed_ism_ploshad = Label(window, width=12, text='м2', font='Times 15').grid(column=2, row=16, sticky=(W, E))

window.bind("<Return>", calculate)

window.mainloop()
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
в один файл надо?
 

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
да
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
ну код ужасен конечно...
вам нужно использовать классы, и портянки ваши можно заменить на циклы
попробую поправить чучуть
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
ошибок куча была, ничего не менял, структуру сохранил как у вас была, просто объединил в класс, вроде работает, даже что то считает...
выкладываю на пастебин, так как тут не уместилось - https://pastebin.com/2L98QxZs
 

ИРЭН

Новичок
Пользователь
Янв 27, 2022
6
0
1
ну код ужасен конечно...
вам нужно использовать классы, и портянки ваши можно заменить на циклы
попробую поправить чучу

ошибок куча была, ничего не менял, структуру сохранил как у вас была, просто объединил в класс, вроде работает, даже что то считает...
выкладываю на пастебин, так как тут не уместилось - https://pastebin.com/2L98QxZs
Благодарю Вас. Вы нас здорово выручили. Мы только пытаемся делать первые шаги в этом направлении. и многого еще не знаем.
 

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