Tkinter는 다음의 네 가지 타입의 제어 변수를 지원합니다.
- BooleanVar
- IntVar
- DoubleVar
- StringVar
그리고 위젯의 특정 속성값은 tkinter가 제공하는 위 네 가지 제어 변수 중 하나를 사용해 값을 확인하거나 설정하는 것이 가능합니다.
예를 들어 Label 위젯을 통해 표시되는 내용은 Label 위젯의 text 속성을 통해서 뿐만 아니라 tkinter의 StringVar 제어 변수를 통해서도 설정이 가능합니다.
# python 3.8.6
# tkinter 8.6
import tkinter as tk
import tkinter.ttk as ttk
class MainWin(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.setting_win()
self.setting_menu()
self.setting_toolbar()
self.setting_widget()
def setting_win(self):
self.title('things-studio.tistory.com')
self.geometry('480x320+200+200')
self.minsize(200, 200)
def setting_menu(self):
pass
def setting_toolbar(self):
pass
# start -------------------------------------------------------------------
def setting_widget(self):
tk.Label(self, text='Label : text').pack()
self.text_var = tk.StringVar()
self.text_var.set('Label : textvariable')
tk.Label(self, textvariable=self.text_var).pack()
# end ---------------------------------------------------------------------
if __name__ == '__main__':
MainWin().mainloop()
StringVar 클래스를 통해 str 타입의 제어 변수를 생성하고, 값 설정을 위해 set 메서드를 사용할 수 있습니다.
Label 위젯의 경우, textvariable 속성은 StringVar 클래스 타입의 제어 변수와 연동됩니다.
Tkinter 제어 변수의 값은 get 메서드로 확인하며, 값 설정을 위해 set 메서드를 사용합니다.
제어 변수 생성 시의 기본값(default value)은 아래 샘플 코드를 통해 확인할 수 있습니다.
# examples
def show_tk_ctrl_var_info(var):
print(type(var.get()), var.get())
show_tk_ctrl_var_info(tk.BooleanVar())
show_tk_ctrl_var_info(tk.IntVar())
show_tk_ctrl_var_info(tk.DoubleVar())
show_tk_ctrl_var_info(tk.StringVar())
show_tk_ctrl_var_info(tk.StringVar(value='string_var'))
string_var = tk.StringVar()
string_var.set('string_var')
show_tk_ctrl_var_info(string_var)
<class 'bool'> False <class 'int'> 0 <class 'float'> 0.0 <class 'str'> <class 'str'> string_var <class 'str'> string_var |
'코딩 > 파이썬 tkinter' 카테고리의 다른 글
[Tkinter] 20장. 위젯 속성(옵션) 설정 방법 (0) | 2020.11.29 |
---|---|
[Tkinter] 18장. 위젯의 winfo_children 메서드 (0) | 2020.11.28 |
[Tkinter] 17장. LabelFrame (0) | 2020.11.16 |
[Tkinter] 16장. Radiobutton (0) | 2020.11.15 |
[Tkinter] 15장. Checkbutton (0) | 2020.11.15 |