2017-10-14 1 views
1

저는 Tkinter를 사용하여 Python 2.7에서 GUI 응용 프로그램을 만들고 있습니다. 내가 거기에 시간 (2 ~ 3 초) 제한된 시간 동안 '성공적으로 구매 추가'레이블을 표시 할 수있는 방법이다 후 사라질 것인지 알고 싶어고정 된 시간 동안 Tkinter에 레이블 표시

vis=Label(pur,text='Purchase Added successfully',font=(8)) 
vis.place(x=150,y=460) 

: 나는이 코드 조각이있다. 왜냐하면 나는 현재 '구매'이후에 새로운 '구매'를 추가하는 데 관심이 있고 성공 메시지가 겹치기를 원하지 않기 때문입니다.

답변

2

은 프로젝트 패턴에 따라 여러 가지 방법이 있습니다, 모든 구문에 따라 :

vis=Label(pur,text='Purchase Added successfully',font=(8)) 
vis.place(x=150,y=460) 
vis.after(3000, function_to_execute) 

총 파괴

당신은 라벨이 이미 생성되어 있는지 궁금하지 않으려면을, 숨겨진 또는 빈, 주로 피할 수 메모리 누수 (브라이언 오클리의 의견 덕분에) :

vis.after(3000, lambda: vis.destroy()) 

그러나 다음을 수행해야 구매할 때마다 신선한 새로운 Label을 만드십시오.


숨기기 및

다음 방법을 파괴하지 않고 라벨의 표시를 비활성화 할 수 있습니다 추구합니다. 당신이 빈 라벨을 유지하는 것을 선호하지 않는

vis.after(3000, lambda: vis.place_forget()) 
#vis.after(3000, lambda: vis.grid_forget()) # if grid() was used 
#vis.after(3000, lambda: vis.pack_forget()) # if pack() was used 

그런 다음 당신은 vis.place(x=150,y=460)


텍스트 지우개

아마 덜 흥미로운 또 다른 방법으로, 다음 구입을 위해 다시 활성화 할 수 있습니다 컨테이너 위젯 :

vis.after(3000, lambda: vis.config(text='')) 

(다음 구매시 vis.config(text='blabla')으로 텍스트를 바꿀 수 있음에 유의하십시오.)

+0

고맙습니다. 이것은 도움이되었습니다! –

+1

'place_forget'은 단지 그것을 디스플레이에서 지우고, 위젯을 파괴하지 않습니다. 오래된 레이블을 손상시키지 않고 새로운 레이블을 작성하면 메모리가 누수됩니다. –

관련 문제