2016-07-17 1 views
0

I 수입, child.py는 mother.py내가 2 개 파일, mother.py 및 child.py이 예를 들어

수입되는 모듈이다 mother.py에서

코드는 다음과 같습니다

class LoginWindow: 
    def __init__(self, master): 
     self.master = master 
     self.content = ttk.Frame(self.master, padding=(20,30,20,30)) 

그리고 나는이 작업을 수행 할 때 나에게 tkk 그 (라 말한다 오류를 줄 : child.py에서

from tkinter import * 
from tkinter import ttk 
from modules.child import LoginWindow 

root = Tk() 
window = LoginWindow(root) 
root.mainloop() 

코드입니다 child.py의 st line은 정의되지 않았지만 이것이 작동하지 않는 이유는 무엇이며이 작업과 같은 것을 만드는 가장 좋은 방법은 무엇입니까?

+2

수입이 그렇게 줄어들지 않습니다. ttk 가져 오기를 child.py로 옮겨야한다. 가져 오기가 상위 코드에서 주입 된 경우 읽기 쉽지 않을 수 있으며 특정 위치에서 가져온 경우에만 작동합니다 (테스트 및 재사용이 복잡함). – jonrsharpe

+0

'tkinter import ttk'를 child.py에 추가하십시오. –

+0

'tkinter import ttk'를 사용하여 child.py의 모든 클래스 (지금처럼 하나의 클래스가 아닌)를 가져 오면 여전히'tkinter import ttk'가 있는데' from tkinter import ttk'는 그것이 효과를 복사하는 것과 같을 것입니다, 맞습니다. –

답변

1

Python에서 가져 오기는 아닙니다. 다른 언어로 "포함"합니다. 전체 모듈은 가져온 모듈의 이름을 따서 이름 붙여진 객체 안에 들어 있습니다. 이 작업을 수행 할 때, :

from modules.child import LoginWindow 

전체 모듈은 LoginWindow 변수/객체의 내부에 포함되어 있습니다. 이 경우 "하위"모듈은 가져온 모듈에서 정의 된 변수를 볼 수 없습니다.

from tkinter import ttk 

child.py 사람 : 당신의 질문의 예에서

, 당신은 이동하려는.

+1

답변 주셔서 감사합니다, 나는 그 수입은 PHP에서'포함'과 같은 것이라고 생각 파이썬에 그런 건 없다고 생각해? –

+0

나는 PHP에서오고 있다고 생각했다. :) 문제 없습니다! 아니요, 파이썬에는 비슷한 것이 없습니다. 그러나, my_module을 임포트한다면, my_module.my_var 또는 my_module.my_func()를 통해 my_module에서 변수와 함수에 접근 할 수 있습니다. – Will