2010-01-05 17 views
3

我想使用askstring提示中的響應來設置變量。不幸的是, 我有困境,因爲變量(urltoopen)沒有任何價值,所以我被困在循環詢問或窗口拒絕繪製。 代碼,因爲它代表:如何使用Python tkSimpleDialog.askstring

urltoopen = tkSimpleDialog.askstring('Address', 'Where do we get the pictures from?') 
usock = urllib2.urlopen(urltoopen) 
data = usock.read()  
usock.close()      

回答

3

tkSimpleDialog.askstring返回None如果用戶單擊取消或關閉窗口(而不是單擊確定或使用回車鍵);你應該檢查一下(如果用戶選擇取消,你想怎麼做?反正肯定不要打urlopen ......)。

除此之外,您正在正確使用該功能;我想通過「沒有價值」你的意思是is None,對吧?

+0

該窗口未打開。而不是啓動程序返回'NoneType' object has no attribute 'winfo_viewable'。它是否應該像其他一些tkSimple的東西一樣被設置爲'如果''其他'類型的情況?我可以看到一個tkSimpleDialog的例子,它設置一個字符串變量與它收到的響應,然後允許程序繼續(對話結束)? – Donnied 2010-01-05 12:49:37

+0

糟糕。我想我已經開始工作了。謝謝你的反饋。現在,我需要清除出現的空白tkinter小部件並啓用複製和粘貼。 – Donnied 2010-01-05 12:54:26

+0

我發現tkSimpleDialog.askstring沒有返回None。它返回布爾值true或false。當我寫道:如果tkSimpleDialog.askstring是None,即使按下對話框上的cancel,該子句也總是被執行。在Windows 10上使用Python 2.7。 – drlolly 2017-07-07 11:13:43

0

root = Tk() 


try: 
     urltoopen = tkSimpleDialog.askstring('Ask Address', 'Where do we get the pictures from?') 
     usock = urllib2.urlopen(urltoopen)              
     data = usock.read()                  
     usock.close()                    
     a = data                     
except:                       
     sys.exit()  

工作正常。但它確實需要錯誤處理(如Alex所述)。