Фон: Чтобы получить практику, я пишу приложение для работы, которое позволит пользователям службы справки grep | хвостовых журналов, не требуя от них выполнения SSH/терминальной работы. Эти пользователи работают на машинах Windows, иначе я бы использовал подпроцесс. Некоторые из серверов используют системные учетные записи (и они заполняются в сценарии), но другие требуют, чтобы пользователь вводил учетные данные.tkinter gui зависает, когда функция не работает
Когда выполняется сценарий (подробности ниже), и пользователь неправильно вводит свои учетные данные, приложение зависает после того, как вы выбрали «Обработчики ошибок» для журнала «paramiko.transport». Когда пользователь выбирает параметр, который не имеет предварительно заполненных учетных данных, им предлагается ввести имя пользователя и пароль. Учетные данные добавляются в соответствующий список, всплывающее окно уничтожается и вызывается функция проверки журнала. Что может заставлять окно зависать, когда возникает ошибка, и каков наилучший способ решения таких проблем?
Я попытался добавить logging.basicConfig(), но приложение все еще зависает. затем появляется окно Учетные
lambda: credentials() if hosts[log.get()][0] in needs_pass else log_check()
Если имя хоста находится в списке:
Полный сценарий: http://pastebin.com/TUvs92yN
Когда пользователь первым нажмет кнопку представить следующее вызывается. После того, как пользователь вводит свой логин и пароль функция submit_cred() называется:
def submit_cred():
if len(hosts[log.get()]) < 3:
hosts[log.get()].append(username_prompt.get())
hosts[log.get()].append(password_prompt.get())
prompt.destroy()
log_check()
Это где начинается проблема. Если учетные данные были правильными, приложение отображает результаты, как ожидалось, но если не вызывается log_check() после того, как окно будет уничтожено, будет получена ошибка и приложение зависает. Я попытался справиться с задачами проверки подлинности в log_check(), но на данный момент, похоже, он не достаточно далеко, чтобы это имело значение.