背景:爲了得到練習我正在編寫一個應用程序的工作,將允許服務檯用戶grep |不需要他們執行SSH /終端工作的尾部日誌。這些用戶在Windows機器上運行,否則我會使用子進程。某些服務器使用系統帳戶(並且這些服務器已預先填充到腳本中),但其他服務器則需要用戶輸入憑據。tkinter gui凍結時功能失敗
當腳本(詳情如下)運行並且用戶錯誤地輸入他們的憑證後,應用程序在拋出'沒有處理程序可以被發現用於記錄器'paramiko.transport''錯誤後掛起。當用戶選擇一個沒有預填充憑證的選項時,系統會提示您輸入用戶名和密碼。證書被附加到適當的列表中,彈出窗口被銷燬並且日誌檢查功能被調用。當拋出錯誤時,可能會導致窗口掛起,以及處理此類問題的最佳方法是什麼?
我試圖添加logging.basicConfig(),但應用程序仍然掛起。
完整的腳本:http://pastebin.com/TUvs92yN
當用戶第一次點擊提交按鈕調用如下:如果在列表中找到該主機名
lambda: credentials() if hosts[log.get()][0] in needs_pass else log_check()
然後出現憑據框。在用戶輸入用戶名和密碼後,調用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()中處理認證問題,但在這一點上它似乎沒有足夠的重要。