2016-11-20 1 views
0

지금까지 각 인터페이스, 스플래시 화면, 로그인 후 메인 인터페이스에 대해 다른 모듈을 만들고 각 모듈에 main_window를 전달합니다.파이썬 tkinter 코드 레이아웃

class MainWindow(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 

다음 각 모듈에 전달합니다. 더 좋은 방법과 tkinter GUI를 만드는 더 체계적인 방법이 있다고 생각합니다. 하나의 모듈에 모든 화면을 만들고 호출하거나 별도의 모듈을 만드나요? TK에와 최상위 레벨에 explaination도 내가 그들을 완전하지 않습니다 이해 좋을 것이다

편집, 난 일반적으로 TK에()를

나는 비교적 새로운 해요 사용에 객체, tk.Tk로 클래스를 사용 . 조언이나 코드 레이아웃 예제가 좋을 것입니다.

+0

'Tk'는 메인 윈도우를 생성합니다 - 하나의 메인 윈도우 만 사용해야합니다. 'Toplevel'은 다른 창을 생성합니다 - 다른 많은 창을 사용할 수 있습니다. 어쩌면'Frame'을 사용하여 위젯을 만든 다음, 그것을 임의의 창에 추가 할 수 있습니다 -'Tk' 또는'Toplevel'. – furas

+0

main_window를 생성하고 매개 변수를 통해 각 모듈에 기본 창을 전달하는 것이 좋습니까? 아니면 모든 인터페이스 항목을 하나의 파일에 넣어야합니까? –

+0

다른 위젯보기 - 항상 첫 번째 인수로'parent'를 전달합니다. 그것은'Tk','Toplevel' 또는 다른 위젯 일 수 있습니다. '프레임 '. 이렇게하면 다른 창 부품의 기본 창이나 팝업/대화 상자 창 또는 요소로 사용할 수 있습니다. – furas

답변

1

위젯은 루트가 하나 인 트리 같은 계층 구조로 존재합니다. 루트 창은 Toplevel이지만 루트 창이기 때문에 몇 가지 특수한 동작이 있습니다. 단일 루트 창과 Toplevel의 모든 인스턴스는 모두 화면에 떠있는 독립적 인 창입니다.

tkinter 응용 프로그램이 제대로 작동하려면 하나의 루트 윈도우가 있어야하지만, 원하는 수만큼의 Toplevel 인스턴스가있을 수 있습니다. 명시 적으로 루트 창을 만들지 않으면 다른 위젯을 처음 만들 때 만들어집니다. 이 동작에 의존하는 tkinter 코드를 작성하면 안됩니다. 암시 적보다 암묵적인 것이 낫습니다.

각 인터페이스를 별도의 모듈에 정의하고 루트 창의 인스턴스를 다른 창의 생성자로 전달하는 것은 매우 합리적입니다.

+0

감사합니다! 내 대답에 표시된대로 주 창에 대한 작업을 수행 한 것처럼 루트 창에있는 각 위젯의 프레임을 만드는 것이 현명한 방법입니까? –

+0

@JoshuaNixon : "내 대답에서 보는 바와 같이"무슨 뜻인지 모르겠다. 나는 당신의 답변을 보지 못했고 귀하의 질문에있는 코드에는 프레임이 없습니다. –

+0

감사합니다. 내 질문에 표시된대로 기본 창에 대한 짓을 한 것처럼 개체로 루트 창에있을 각 위젯의 프레임을 만드는 것이 현명한 것입니까? 나는 메인 윈도우를하는 방법처럼 각 프레임을 만들어야 함을 의미한다. 그래서 각 프레임 tk.Frame .__ init__ 등을위한 클래스를 만든다. –