기존 코드에 앞의 코드를 더해 실행해 보면 오류는 발생하지 않지만, 의도치 않은 문제가 생깁니다. 버튼을 클릭하지 않아도 텍스트가 보이죠. 버튼을 클릭할 때 텍스트가 보이게 하려면 화면을 처음 생성할 때 두 번째 레이블(lbl2)에는 어떤 글자도 보이지 않아야 합니다. 그리고 버튼을 클릭했을 때만 텍스트가 보여야 하죠. 따라서 lbl2 객체에 들어가는 값이 화면을 생성할 때와 버튼을 클릭할 때에 달라야 합니다.
이처럼 화면이 생성된 후에 변하는 값을 저장하는 변수를 동적변수라고 합니다. 동적변수는 화면이 만들어진 이후 다양한 이벤트에 의해 값이 변합니다. 동적변수도 변수이므로 사용하려면 먼저 만들어야 합니다. 동적변수의 값이 문자열일 때는 StringVar(), 정수형일 때는 IntVar()로 만듭니다. 그리고 실수형은 float()가 아닌 DoubleVar()로 만듭니다.
형식
변수명 = StringVar() # 또는 IntVar(), DoubleVar()
그리고 객체에 textvariable 옵션을 줘서 사용할 동적변수를 지정합니다.
형식
레이블명 = Label(root, textvariable=동적변수)
동적변수를 만들고 실행해 보면 동적변수가 들어 있는 공간은 아무것도 없는 빈 공간으로 보입니다. 이런 동적변수의 값을 변경하고 싶을 때 set()을 사용합니다. set()에 변경하려는 값을 넣고 실행하면 동적변수 위치에 변경하려는 값이 나타납니다.
형식
동적변수.set(변경값)