2009-09-10 4 views
34

숨기기 또는 다른 방법으로 표시되는 루트 창을 없애는 스마트 방법을 알고 있습니까? Tk()? 나는 단지 정상적인 대화를 사용하고 싶다.파이썬 Tkinter 루트 창을 제거하는 방법은 무엇입니까?

대화 상자를 건너 뛰고 모든 구성 요소를 루트 창에 표시해야합니까? 그것은 가능하거나 바람직합니까? 아니면 똑똑한 솔루션이 있습니까?

+4

그림 링크가 유효하지 않습니다. –

답변

47

아마도 tk 기반 응용 프로그램의 대부분은 모든 구성 요소를 기본 루트 창에 배치합니다. 이미 존재하므로 가장 편리한 방법입니다. 기본 창을 숨기고 자신 만의 창을 만드는 것을 선택하는 것은 아주 좋은 일입니다. 단지 약간의 추가 작업 만 필요합니다. 다시 볼 수 창을 확인하려면

import Tkinter as tk 
root = tk.Tk() 
root.withdraw() 

deiconify (또는 wm_deiconify) 메소드를 호출

이 그것을 숨길하는 방법에 대한 특정 질문에 대답하기 위해, 루트 윈도우의 withdraw 방법을 사용합니다. 당신이 대화 상자가 완료되면

root.deiconify() 

, 당신은 destroy 방법으로 다른 모든 Tkinter의 위젯과 함께 루트 창을 파괴 할 수있다 :

root.destroy() 
OSX에
+0

메인 창을 사용하여 트릭을 만들었습니다. 감사! –

+0

그래서 StackOverflow에는 .destroy(), tkinter.Toplevel (self) .destroy(), quit(), tkinter.Toplevel (self) .quit(), withdraw(), iconify()를 사용하는 솔루션이 있습니다. 좋은. 그 중 하나가 작동하는 것을 제외하고는 ... "top_lev = tkinter.Toplevel (label); label.master.destroy(); label.destroy(); top_lev.destroy(); root = tkinter.Tk(); root.withdraw(); root.destroy() "는 매력 (일부 풍자가 관련된)처럼 작동합니다. –

+0

@deusexmachina : 당신이 그것을 유용하게 사용하면 모두 작동하지만, 모두 다른 목적을 가지고 있습니다. '.quit()'와'.destroy()'는 실제로 동일합니다. –

10

파이썬/TKinter 환경이 없기 때문에 테스트를하지 않았지만 시도해보십시오.

순수한 Tk에는 "wm"이라는 방법으로 창을 관리합니다. 여기서 "wm withdraw .mywindow"와 같은 것을 할 수 있습니다. '.mywindow'는 최상위 위치입니다. 당신이 deiconify (또는 wm_deiconify) 메서드를 호출, 다시 볼 수 창을 확인하려면

root = Tkinter.Tk() 
root.withdraw() # won't need this 

:

는 Tkinter에서 다음과 유사한 일을 할 수 있어야합니다.

+0

어떻게 창문을 맨 위로 되돌릴 수 있습니까? – IcyFlame

+1

@IcyFlame : 당신은'root.deiconify()'를 사용하여 창이 다시 나타나게합니다. –

+0

선생님, 고맙습니다. 이미 질문을하고 대답을 얻었습니다. 대답 : http://stackoverflow.com/questions/15967690/showing-a-window-that-was-hidden-using-root-withdraw-in- tkinter – IcyFlame

4

, 아이콘 화는 잘 작동하는 것 같다 :

0

창이 생성 될 때 "플래시"를 사용하지 않으려면 다음과 같은 약간의 변형을 사용하십시오.

import Tkinter as tk 
root = tk.Tk() 
root.overrideredirect(1) 
root.withdraw() 
관련 문제