파이썬(Python)/tkinter

파이썬 tkinter 변수값 가져오기(StringVar, IntVar, DoubleVar, BooleanVar) - 예제로 이해하기

끄적끄적아무거나 2021. 9. 12. 09:54
반응형

 

목차

     

     

     

     

     

    파이썬 tkinter 변수값 가져오기(StringVar, IntVar, DoubleVar, BooleanVar)


    tkinter에서 만일 텍스트 박스에 텍스트를 입력하고 해당 입력값을 이용하고 싶을 때 그냥 일반 파이썬으로 하듯이 변수를 가져오면 에러가 발생합니다.

    변수 선언은 tkinter에서 제공하는 함수를 사용해서 선언해야 합니다. 종류는 아래와 같습니다.

     

    • StringVar : string 변수를 선언
    • IntVar : Integer (정수) 변수를 선언
    • DoubleVar : float (실수) 변수를 선언
    • BooleanVar : True Flase 변수를 선언

     

     

     

    tkinter 변수 예제로 이해해보기


    아래 예의 코드는 텍스트 박스와 버튼을 만들고 텍스트 박스에 값을 입력하고 버튼을 누르면 아래에 라벨에 입력한 값이 출력되게 하는 코드입니다.

    하지만 이해를 돕기 위해 우선 일반적인 string 으로 변수를 선언하고 어떻게 되는지 살펴보겠습니다.

     


    코드>>

    from tkinter import * 
    
    app = Tk() 
    
    def click(): 
    	txt_label.configure(text=input_text.get()) 
    
    input_text = "" 
    
    input_text_entered = Entry(app, width=15, textvariable=input_text) 
    input_text_entered.grid(column=0, row=1) 
    action = Button(app, text="Enter", command=click) 
    action.grid(column=1, row=1) 
    txt_label = Label(app, text="") 
    txt_label.grid(column=0, row=2) 
    
    app.title('scribblinganything.tistory.com') 
    app.geometry("200x100") 
    app.mainloop()

     

     


    결과>>


    아래와 같이 hi라고 입력 후 버튼을 클릭하였으나 에러메세지가 발생하였다.

     

     

    에러메세지>>
    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Users\forgo\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
    File "c:\Users\forgo\Documents\python_ex\web_test\test07.py", line 6, in click
    txt_label.configure(text=input_text.get())
    AttributeError: 'str' object has no attribute 'get'

     

     

     

     

     

    이번에는 변수를 tkinter의 StringVar()로 선언해서 수정된 코드를 실행해 보겠습니다.

    코드>>

    from tkinter import * 
    
    app = Tk() 
    
    def click(): 
    	txt_label.configure(text=input_text.get()) 
    
    input_text = StringVar()
    
    input_text_entered = Entry(app, width=15, textvariable=input_text) 
    input_text_entered.grid(column=0, row=1) 
    action = Button(app, text="Enter", command=click) 
    action.grid(column=1, row=1) 
    txt_label = Label(app, text="") 
    txt_label.grid(column=0, row=2) 
    
    app.title('scribblinganything.tistory.com') 
    app.geometry("200x100") 
    app.mainloop()

    8번 라인: input_text를 StringVar()를 사용해서 선언하였습니다.

     

     


    결과>>
    아래와 같이 입력값이 출력으로 정상적으로 나왔습니다.


    주석>>
    변수를 StringVar로 선언하였기 때문에 GUI에서 tkinter가 변수값을 가져오는데 문제가 없었습니다.


    반응형