#python #pysimplegui
Вопрос:
У меня есть макет и вводимый текст, и я хочу, чтобы вводимый текст не оставался пустым. Я искал всю документацию PySimpleGUI, но не увидел, как я могу настроить вводимый текст в соответствии с требованиями
вот мой код
layout = [[sg.Text('enter your license code')],
[sg.InputText()], # I wan't this input to be required
[sg.Submit('OK'), sg.Cancel('Cancel')]]
window = sg.Window('invalid License', layout, icon="logo.ico")
while True:
event, values = window.read()
if event == 'Cancel' or event == sg.WIN_CLOSED:
break # exit button clicked
window.close()
license_input = values[0]
read_configs('license.txt')
lic = "license.txt"
with open(lic, 'r ') as f:
text = f.read()
text = re.sub(license_code, license_input, text)
f.seek(0)
f.write(text)
f.truncate()
Ответ №1:
Код лицензии, необходимый для всплывающего окна
- Кнопка «Отмена» не нужна и удалена
- Кнопка «Закрыть» окна отключена
enable_close_attempted_event=True
иsg.WINDOW_CLOSE_ATTEMPTED_EVENT
не обрабатывается, или она сначала уничтожит окно при нажатии кнопки «Закрыть». - Прочитайте и верните текущее значение элемента ввода методом
get
или с помощьюvalues[element]
кнопки если не «Закрыть» события окна. - Прерывайте цикл событий только тогда, когда значение входного элемента не является нулевой строкой.
import PySimpleGUI as sg
layout = [
[sg.Text('enter your license code')],
[sg.InputText(key='-INPUT-')],
[sg.Submit('OK')],
]
window = sg.Window('invalid License',
layout,
#icon="logo.ico",
enable_close_attempted_event=True)
while True:
event, values = window.read()
print(event, values)
license_code = window['-INPUT-'].get().strip()
if event == 'OK' and license_code:
break
window.close()
print(license_code)
Комментарии:
1. чтение и запись в файл лицензии моя проблема в том, что, когда пользователь оставил его пустым, он удалит старое значение, и функция регулярного выражения не сработает в следующий раз, когда пользователь попытается ввести лицензию