2014-08-31 3 views
0

나는 파이썬과 tkinter으로 만든 GUI를 가지고있다. GUI의다중 tkinter 폼?

from Tkinter import * 
from PIL import Image, ImageTk 

master = Tk() 

def f1(): 
    print "Change to form A" 

def f2(): 
    print "Change to form B" 

title = Label(text="Swithing Menus or Forms") 
title.grid(row=0, column=1) 

blank = Label(text="\n") 
blank.grid(row=1, column=1) 


b = Button(master, text="Submenu A", command=f1) 
b.grid(row=2, column=1) 

b2 = Button(master, text="Submenu B", command=f2) 
b2.grid(row=2, column=2) 
mainloop() 

버튼 나 클릭에 함수를 호출 할 수 있습니다 :

내 코드가 같이 보입니다.

구성 요소를 비활성 상태로 만들 수는 있지만 버튼을 클릭하면 다른 양식을 가져올 수 있습니까?

모든 구성 요소가 사라지고 새 구성 요소가 표시됩니까?

frame1.pack_forget() 
frame2.pack() 

(사용 그리드)

frame1.grid_forget() 
frame2.grid() 
(사용 팩) : 개인적으로
+0

위젯을 모두 삭제하고 같은 창에서 새 위젯을 만드는 것을 의미합니까? – W1ll1amvl

+0

예. 모든 위젯을 없애고 창을 열어 두십시오. 기본적으로 두 번째 위젯을 불러오는 첫 번째 "form"을 제출하십시오. – user8028

답변

1

내가 양식을 변경하는 방법 것처럼 간단 할 것 프레임 내부의 각 양식을 구축 할 것입니다이 작업을 수행하는

이고 편도적 인 것이라면 (즉, 첫 번째 양식을 다시로드 할 수 없음)

frame.destroy() 
(210)

제임스

+1

'frame1.lift (frame2)'(프레임 2 위에 프레임 1 올리기) 또는'frame1.lower (frame2)'(프레임 2 아래의 프레임 1) – fhdrsdg

1

좋아, 먼저 제임스는 대답을 잘했지만 나는 몇 가지 추가하고 싶은 : 당신이 그것을 .grid() 수 있도록 위젯 등을 어디에이 기억

당신은 grid.remove() 사용할 수 있습니다 다시 동일한 사양으로 다시 가져옵니다. 위젯에 대해 '잊어 버렸기'때문에 이것은 아마도 pack/grid.forget()보다 약간 낫습니다.

또한 질문의 아래 부분에 대답하려면 예, 새로운 양식을 가져올 수 있습니다. 더 많거나 다른 창 부품을 만들 수 있고, 더 많은 창을 만들 수 있으며, 다른 모듈도 함수 내에서 호출 할 수 있습니다.

나는 이것이 당신의 질문에 대답했다고 생각하지만, 더 많은 것이 있으면 그냥 물어보십시오.

+0

+1은 remove()를 잊었 기 때문에 +1합니다. –