**kwargs: Many Keyworded Arguments
-
**kwargs 가변 키워드 인수
-
모든 입력을 검토해서 원하는 값을 찾을 수 있도록 해줌
-클래스 생성 가능
- get함수 사용해서 딕셔너리 키를 넣지 않아도 오류 발생하지 않게 할 수 있음
TKinter 모듈
-
기본적으로 파이썬의 문법과 아주 다름
-
작동하기 위해서 기본적으로 TK명령을 사용
-
모든 선택 사항들을 취해서 **kwargs나 선택적 키워드 인수로 바꿈
-
레이블 생성시 수정할 수 있는 어떤 프로퍼티도 나타나지 않았던 이유
TKinter 위젯 설정 바꾸기
- Button
- Entry
텍스트를 입력받는 컴포넌트
버튼을 눌렀을 때 입력값을 레이블에 뜨게 하기
-
tkinter모듈의 IntVar()
tkinter에서 제공하는 변수 클래스 중 하나로, GUI 위젯 간의 데이터 바인딩을 지원함
예를 들어, 체크박스나 라디오 버튼과 같은 위젯의 상태를 추적하거나 변경할 때 사용할 수 있다.
위젯의 다른 기능
from tkinter import *
#Creating a new window and configurations
window = Tk()
window.title("Widget Examples")
window.minsize(width=500, height=500)
#Labels
label = Label(text="This is old text")
label.config(text="This is new text")
label.pack()
#Buttons
def action():
print("Do something")
#calls action() when pressed
button = Button(text="Click Me", command=action)
button.pack()
#Entries
entry = Entry(width=30)
#Add some text to begin with
entry.insert(END, string="Some text to begin with.")
#Gets text in entry
print(entry.get())
entry.pack()
#Text
text = Text(height=5, width=30)
#Puts cursor in textbox.
text.focus()
#Adds some text to begin with.
text.insert(END, "Example of multi-line text entry.")
#Get's current value in textbox at line 1, character 0
print(text.get("1.0", END))
text.pack()
#Spinbox
def spinbox_used():
#gets the current value in spinbox.
print(spinbox.get())
spinbox = Spinbox(from_=0, to=10, width=5, command=spinbox_used)
spinbox.pack()
#Scale
#Called with current scale value.
def scale_used(value):
print(value)
scale = Scale(from_=0, to=100, command=scale_used)
scale.pack()
#Checkbutton
def checkbutton_used():
#Prints 1 if On button checked, otherwise 0.
print(checked_state.get())
#variable to hold on to checked state, 0 is off, 1 is on.
checked_state = IntVar()
checkbutton = Checkbutton(text="Is On?", variable=checked_state, command=checkbutton_used)
checked_state.get()
checkbutton.pack()
#Radiobutton
def radio_used():
print(radio_state.get())
#Variable to hold on to which radio button value is checked.
radio_state = IntVar()
radiobutton1 = Radiobutton(text="Option1", value=1, variable=radio_state, command=radio_used)
radiobutton2 = Radiobutton(text="Option2", value=2, variable=radio_state, command=radio_used)
radiobutton1.pack()
radiobutton2.pack()
#Listbox
def listbox_used(event):
# Gets current selection from listbox
print(listbox.get(listbox.curselection()))
listbox = Listbox(height=4)
fruits = ["Apple", "Pear", "Orange", "Banana"]
for item in fruits:
listbox.insert(fruits.index(item), item)
listbox.bind("<<ListboxSelect>>", listbox_used)
listbox.pack()
window.mainloop()
TKinter Layout Managers
- tkinter는 다양한 레이아웃 관리자를 가지고 있어서 GUI프로그램에 있는 위젯의 배치하는 방법을 정의함
Pack
-
디폴트로 항상 위에서부터 배치
-
side 매개변수를 사용해서 변경 가능
Place
- x와 y값을 제공할 수 있음
Grid
-
열과 행을 나눌 수 있음
-
Grid와 Pack은 같이 쓸 수 없음
padding을 추가하는 방법
- 특정 컴포넌트만 여백을 주고 싶을 때도 똑같이 해당 컴포넌트에서 설정해주면 됨
ex)
my_label.config(padx=20, pady=20)