2014-07-14 3 views
2

다음 코드는 IDLE 내에서 정상적으로 실행되지만, 그렇지 않으면 "NameError : global name 'messagebox'not defined"가 발생합니다. 그러나 명시 적으로 from tkinter import messagebox을 지정하면 정상적으로 실행됩니다.Python tkinter 8.5 import messagebox

왜 IDLE은 명시 적 import 구문이 필요하지 않지만 다른 곳에서는 필요합니까?

+1

IDLE은 tkinter 프로그램이므로 고유 한 가져 오기 및 루트가 있습니다. IDLE에서 tkinter로 프로그래밍하는 것은 나쁜 생각입니다. 이상 행동을 피하려면 콘솔에서 더 좋습니다. – Trimax

답변

7

메시지 박스는 Tkinter를 별도의 서브 모듈, 그래서 간단하게는 Tkinter에서 가져 오기를 완료하고 : 명시 적으로과 같이 가져올 수있다

from tkinter import * 

는 메시지 박스 가져 오지 않습니다 :

from tkinter import messagebox 

ttk를 명시 적으로 가져 오는 것과 동일한 방식으로

유휴 상태에서 작동하는 이유는 유휴 상태에서 메시지 상자를 가져 오기 때문에 유휴 상태로 작동하기 때문에 유휴 상태에서 작업 할 때 해당 가져 오기에 액세스 할 수 있습니다.

+0

의미가 있습니다. 좋은 대답. –

4

IDLE은 Python으로 작성되었으며 GUI 용으로 Tkinter를 사용하므로 프로그램에서 IDLE 자체에서 사용중인 import 문을 사용하는 것처럼 보입니다. 그러나 IDLE 프로세스 외부에서 프로그램을 실행하려면 messagebox에 대해 import 문을 명시 적으로 포함시켜야합니다.

+0

고맙습니다. 똑같이 좋은 대답. –