2016-07-07 96 views
0

我想顯示一個目錄選擇對話框(用於獲取路徑,然後用於保存下載的東西)。代碼在IDLE中運行良好,但是當我嘗試運行它時CMD我得到這個錯誤Tkinter不在cmd中工作(在IDLE中工作)

NameError: name 'Tk' is not defined

我使用Tkinter的GUI的。

代碼段

from tkinter import filedialog 
root = Tk() 
root.withdraw() 
filename = filedialog.askdirectory() 

使用Python 3.4.3。任何幫助/建議?

+0

我在3.4.4和3.5.1應用補丁似乎在3.5.2或3.6.0a2導致NameError現在固定在該代碼運行這一具體問題,從IDLE,因爲它應該。跟蹤問題是https://bugs.python.org/issue25507。我希望在3.6.0之前完成這個由於隱藏導入而導致應用失敗的IDLE運行代碼問題。 –

+0

@TerryJanReedy感謝您的信息! –

+0

我的答案在這裏:https://stackoverflow.com/questions/38806673/importing-from-a-package-in-idle-vs-shell/38808437#38808437描述如何解決這個現有的版本。 –

回答

0

該聲明from tkinter import filedialog僅從tkinter導入filedialog模塊。如果你想要通常的Tkinter的東西,你也必須導入。我建議import tkinter as tk,然後用例如。 root = tk.Tk(),所以你不要把所有東西都轉儲到全局命名空間中。或者,如果您真的只需要根對象,請使用from tkinter import Tk

from tkinter import Tk 
from tkinter import filedialog 
root = Tk() 
root.withdraw() 
filename = filedialog.askdirectory() 
+0

老兄,你是上帝!萬分感謝! –