PySimpleGUI и переменная ввода

Рейтинг: 0Ответов: 2Опубликовано: 25.01.2023

Всем привет. Я только начал изучать питон, буду благодарен, если подскажете. Мне нужна программа, которая может проверять никнеймы на двух сайтах. Есть графический интерфейс. Суть проблемы, в том, что после нажатия кнопки открываются сразу две ссылки даже если ничего не введено. Я хочу сделать, чтобы программа проверяла, введено ли что-то и где именно и относительно этого открывала ссылки. Первое, что не понятно, это сделать, чтобы то, что введено в окно 1 отделить от того, что введено в окно 2. Хочу сделать 2 переменные и проверять их

import webbrowser
import PySimpleGUI as sg
sg.theme('Black')
layout = [ [sg.Text('Проверка на форуме'), sg.InputText()],
         [sg.Text('Проверка на StatName'), sg.InputText()],
         [sg.Button('Проверить')] ]
window = sg.Window('ForumCheck', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Cancel': # if user closes window or clicks cancel
        break
    fr=(values[0])
    webbrowser.open(f"https://www.gipsyteam.ru/profile/{fr}")
    webbrowser.open(f"https://statname.net/player_search?term={fr}")

Ответы

▲ 1

Добавил:

  • Ключи к полям и кнопке
  • Логику при клике на кнопку с извлечением значений полей

Если нужна проверка введенного значения в полях используйте if <переменная>::, пример:

if gipsyteam:
    webbrowser.open(f"https://www.gipsyteam.ru/profile/{gipsyteam}")

Пример:

import webbrowser
import PySimpleGUI as sg


sg.theme('Black')
layout = [
    [sg.Text('Проверка на форуме'), sg.InputText(key='input_gipsyteam')],
    [sg.Text('Проверка на StatName'), sg.InputText(key='input_statname')],
    [sg.Button('Проверить', key='button_check')]
]
window = sg.Window('ForumCheck', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Cancel': # if user closes window or clicks cancel
        break

    if event == 'button_check':
        gipsyteam = values['input_gipsyteam']
        statname = values['input_statname']

        webbrowser.open(f"https://www.gipsyteam.ru/profile/{gipsyteam}")
        webbrowser.open(f"https://statname.net/player_search?term={statname}")
▲ 1
import webbrowser
import PySimpleGUI
from PySimpleGUI import theme, Window, Text, InputText, Button


class Application:
    def __init__(self):
        theme('green')
        layout = [[Text('Проверка на форуме'), InputText()],
                  [Text('Проверка на StatName'), InputText()],
                  [Button('Проверить')]]
        self.window = Window('ForumCheck', layout)

    def run(self):
        while True:
            event, values = self.window.read()
            # print(f"Event: {event}\nValues: {values}") # Смотрим что из себя представляют event и values
            if event == PySimpleGUI.WIN_CLOSED or event == 'Cancel':  # if user closes window or clicks cancel
                break
        
            # Если нажата кнопка с текстом 'Проверить' то провалиться в блок
            elif event == "Проверить":
                # Будем проверять с учётом того что в один момент будет заполненно только одно поле ввода
                if values[0]:
                    webbrowser.open(f"https://www.gipsyteam.ru/profile/{values[0]}")
                elif values[1]:
                    webbrowser.open(f"https://statname.net/player_search?term={values[1]}")


def main():
    Application().run()


if __name__ == '__main__':
    main()