pysimplegui как заставить клавиши и строчки ввода работать?

Злодей

Новичок
Пользователь
Янв 10, 2021
2
0
1
1)Windows 10
2)версия Python 3.8
3)pip list:
-Pysimplegui


import PySimpleGUI as sg
layout = [[sg.Text('Введите высоту между r1 и r2:')], [sg.Input(key='-IN-')],
[sg.Text('Введите r1:')], [sg.Input(key='-IN-')],
[sg.Text('Введите r2:')], [sg.Input(key='-IN-')],
[sg.Text('Результат в Литрах', size=(30,1), key='-OUT-')],
[sg.Button('OK'), sg.Button('Выход')], [sg.Button('Стереть все')]]

window = sg.Window('Вычислятель объема', layout)

while True:
event, values = window.read()
if event == 'Выход' or event == sg.WIN_CLOSED:
break
window['-OUT-'].update(values['-IN-'])

window.close()

Добрый день! Хочу научиться делать простые программы с интерфейсом, но толком туториалов по этой теме я не нашел :(
Я учу питон пока только второй день, но для того, чтобы освоиться, я решил сделать простой "вычеслятель" объема для усеченных конусов.
Я хочу сделать так, чтобы в каждую строчку вводилось значение, а после нажатия на "OK" Срабатывала формула:
summ=((1/3) * math.pi * h * (r1**2+r1*r2+r2**2)) и выводилась вместо "Результат в литрах". Как привязать вводимое значение к переменной и как дать функцию клавишам?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> Python.
Хочу научиться делать простые программы с интерфейсом
Попробуйте делать их на tkinter - это не сложнее чем PySimpleGUI , но материалов больше.
Также пройдите какой-нибудь курс или уроки по основам питона.
но толком туториалов по этой теме я не нашел
У PySimpleGUI довольно подробная документация: ссылка.
Как привязать вводимое значение к переменной и как дать функцию клавишам?
Вот пример:
Python:
import PySimpleGUI as sg
from math import pi


layout = [
    [sg.Text("Введите высоту между r1 и r2:")], [sg.Input(key="-IN-0")],
    [sg.Text("Введите r1:")], [sg.Input(key="-IN-1")],
    [sg.Text("Введите r2:")], [sg.Input(key="-IN-2")],
    [sg.Text("Результат в Литрах", size=(30, 1), key="-OUT-")],
    [sg.Button("OK"), sg.Button("Выход")],
    [sg.Button("Стереть все")],
]

window = sg.Window("Вычислятель объема", layout)

while True:
    event, values = window.read()
    if event == "OK":
        # если поля пустые - ничего не делаем
        if "" in [values["-IN-0"], values["-IN-1"], values["-IN-2"]]:
            continue
        h = float(values["-IN-0"])
        r1 = float(values["-IN-1"])
        r2 = float(values["-IN-2"])
        x = (1 / 3) * pi * h * (r1 ** 2 + r1 * r2 + r2 ** 2)
        window["-OUT-"].update(x)
    elif event == "Стереть все":
        window["-IN-0"].update("")
        window["-IN-1"].update("")
        window["-IN-2"].update("")
        window["-OUT-"].update("")
    if event == "Выход" or event == sg.WIN_CLOSED:
        break


window.close()
 
  • Мне нравится
Реакции: Злодей

Злодей

Новичок
Пользователь
Янв 10, 2021
2
0
1
Код вставляйте с помощью ... -> код -> Python.

Попробуйте делать их на tkinter - это не сложнее чем PySimpleGUI , но материалов больше.
Также пройдите какой-нибудь курс или уроки по основам питона.

У PySimpleGUI довольно подробная документация: ссылка.

Вот пример:
Python:
import PySimpleGUI as sg
from math import pi


layout = [
    [sg.Text("Введите высоту между r1 и r2:")], [sg.Input(key="-IN-0")],
    [sg.Text("Введите r1:")], [sg.Input(key="-IN-1")],
    [sg.Text("Введите r2:")], [sg.Input(key="-IN-2")],
    [sg.Text("Результат в Литрах", size=(30, 1), key="-OUT-")],
    [sg.Button("OK"), sg.Button("Выход")],
    [sg.Button("Стереть все")],
]

window = sg.Window("Вычислятель объема", layout)

while True:
    event, values = window.read()
    if event == "OK":
        # если поля пустые - ничего не делаем
        if "" in [values["-IN-0"], values["-IN-1"], values["-IN-2"]]:
            continue
        h = float(values["-IN-0"])
        r1 = float(values["-IN-1"])
        r2 = float(values["-IN-2"])
        x = (1 / 3) * pi * h * (r1 ** 2 + r1 * r2 + r2 ** 2)
        window["-OUT-"].update(x)
    elif event == "Стереть все":
        window["-IN-0"].update("")
        window["-IN-1"].update("")
        window["-IN-2"].update("")
        window["-OUT-"].update("")
    if event == "Выход" or event == sg.WIN_CLOSED:
        break


window.close()

Спасибо! Документацию обязательно прочитаю! Хочу именно с ним разобраться!
 

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