Look and Feel!
위의 이미지와 같이 tkinter.Checkbutton 또는 ttk.Checkbutton은 사용자로부터 두 가지 상태 값을 입력받기 위해 사용될 수 있습니다.
아래 샘플 코드를 통해 Checkbutton의 여러 속성(옵션)에 대해 확인할 수 있습니다.
- 아래의 코드에선 총 8개의 Checkbutton을 생성합니다.
- Checkbutton의 상태는 variable 속성으로 넘겨준 변수에 저장됩니다. 아래 코드와 같이 사용 가능한 변수 타입은 Boolean 외에 Int 및 String도 가능합니다.
- 1번 Checkbutton의 상태값을 변경하면, 2번 ~ 4번 Checkbutton의 상태도 변경됩니다. 단, 3번 ttk.Checkbutton은 상태가 변경되지 않습니다.
- Checkbutton이 비활성화 상태에서도 상태값은 변경될 수 있습니다.
- tkinter.Checkbutton엔 Checkbutton 위젯 자체에 상태값을 바꾸는 메서드 select()가 있으나 ttk.Checkbutton은 이를 지원하지 않습니다.
import tkinter as tk
import tkinter.ttk as ttk
class MainWin(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.win_setting()
self.win_setting_widgets()
def win_setting(self):
self.title('tkinter (things-studio.tistory.com)')
self.geometry('480x320+200+200')
self.minsize(200, 200)
# //start
# -------------------------------------------------------------------------
def win_setting_widgets(self):
# tkinter.Checkbutton 1
self.tk_checkbutton_1_var = tk.BooleanVar()
tk.Checkbutton(self, text='tkinter.Checkbutton 1',
variable=self.tk_checkbutton_1_var,
command=self.tk_checkbutton_1_changed)\
.grid(row=0, column=0, padx=20, pady=10)
# tkinter.Checkbutton 2
self.tk_checkbutton_2_var = tk.IntVar()
tk.Checkbutton(self, text='tkinter.Checkbutton 2',
variable=self.tk_checkbutton_2_var,
state='disabled')\
.grid(row=1, column=0)
# tkinter.Checkbutton 3
self.tk_checkbutton_3_var = tk.IntVar()
self.tk_checkbutton_3 = tk.Checkbutton(self, text='tkinter.Checkbutton 3',
variable=self.tk_checkbutton_3_var)
self.tk_checkbutton_3.grid(row=2, column=0)
# tkinter.Checkbutton 4
self.tk_checkbutton_4_var = tk.BooleanVar()
tk.Checkbutton(self, text='tkinter.Checkbutton 4',
variable=self.tk_checkbutton_4_var,
indicatoron=False)\
.grid(row=3, column=0)
# --------------------------------------------------------------------
# ttk.Checkbutton 1
self.ttk_checkbutton_1_var = tk.BooleanVar()
ttk.Checkbutton(self, text='ttk.Checkbutton 1',
variable=self.ttk_checkbutton_1_var,
command=self.ttk_checkbutton_1_changed)\
.grid(row=0, column=1, padx=20)
# ttk.Checkbutton 2
self.ttk_checkbutton_2_var = tk.IntVar()
ttk.Checkbutton(self, text='ttk.Checkbutton 2',
variable=self.ttk_checkbutton_2_var,
state=tk.DISABLED)\
.grid(row=1, column=1)
# ttk.Checkbutton 3
self.ttk_checkbutton_3_var = tk.StringVar(value='off')
ttk.Checkbutton(self, text='ttk.Checkbutton 3',
variable=self.ttk_checkbutton_3_var,
onvalue='on',
offvalue='off')\
.grid(row=2, column=1)
# ttk.Checkbutton 4
self.ttk_checkbutton_4_var = tk.StringVar(value='off')
ttk.Checkbutton(self, text='ttk.Checkbutton 4',
variable=self.ttk_checkbutton_4_var,
onvalue='on',
offvalue='off')\
.grid(row=3, column=1)
# callback for tkinter.Checkbutton 1
def tk_checkbutton_1_changed(self):
if self.tk_checkbutton_1_var.get():
self.tk_checkbutton_2_var.set(1)
self.tk_checkbutton_3.select()
self.tk_checkbutton_4_var.set(True)
else:
self.tk_checkbutton_2_var.set(0)
self.tk_checkbutton_3.deselect()
self.tk_checkbutton_4_var.set(False)
# callback for ttk.Checkbutton 1
def ttk_checkbutton_1_changed(self):
self.ttk_checkbutton_2_var.set(self.ttk_checkbutton_1_var.get())
self.ttk_checkbutton_3_var.set(self.ttk_checkbutton_1_var.get())
if self.ttk_checkbutton_1_var.get():
self.ttk_checkbutton_4_var.set('on')
else:
self.ttk_checkbutton_4_var.set('off')
# -------------------------------------------------------------------------
# end//
if __name__ == '__main__':
MainWin().mainloop()
'코딩 > 파이썬 tkinter' 카테고리의 다른 글
[Tkinter] 17장. LabelFrame (0) | 2020.11.16 |
---|---|
[Tkinter] 16장. Radiobutton (0) | 2020.11.15 |
[Tkinter] 14장. 위젯의 focus() 메서드 (0) | 2020.11.15 |
[Tkinter] 13장. Entry (0) | 2020.11.12 |
[Tkinter] 12장. Button (0) | 2020.11.11 |