Tkinter 옵션 setting하기
Tkinter에서 옵션을 넣을 수 있는 세 가지 방법이 있다.
1. 클래스에서 객체를 생성할 때, keyword arguments로 필요한 옵션을 지정하는 방법이다.
my_label = tkinter.Label(text="Olivia", font =("Arial", 24, "bold"))
2. 객체를 생성하고 나면, 딕셔너리에 key: value를 추가하는 것처럼 [ ] 메소드를 이용하여 옵션을 넣는다.
my_label = tkinter.Label(text="Olivia", font =("Arial", 24, "bold"))
my_label["text"] = "New text"
3. 객체를 생성한 뒤, config() 메소드를 이용해서 옵션을 추가한다.
my_label.config(text = "another text")
세 가지 중 어느 것을 사용해도 무방하다.
Button()
다음으로는 tkinter클래스에서 버튼 Button component를 만들어보겠다.
상단 중앙에 click이라고 쓰인 버튼을 만든다.
pack() 메소드로 화면에 보이도록 한다.
button = tkinter.Button(text="click")
button.pack()
하지만 이 상태에서는 클릭버튼을 눌러도 아무런 일이 일어나지 않는다.
그래서 클릭하면 어떤 명령을 수행하도록
command 프로퍼티에 특정 함수를 지정한다.
다만 clicked함수를 바로 호출하는 것이 아니기에, 괄호는 생략한다.
def clicked():
print("버튼이 클릭되었습니다.")
button = tkinter.Button(text="click", command = clicked)
button.pack()
(연습문제) 버튼을 클릭하면 레이블에 적힌 글자가 바뀌도록, 코드를 짜보세요!
import tkinter
window = tkinter.Tk()
window.title("Let's make GUI!")
window.minsize(width=300, height=300)
my_label = tkinter.Label(text="Olivia", font =("Arial", 24, "bold"))
my_label["text"] = "New text"
my_label.config(text = "another text")
my_label.pack()
def clicked():
print("버튼이 클릭되었습니다.")
my_label.config(text = "마우스를 클릭했습니다")
button = tkinter.Button(text="click", command = clicked)
button.pack()
Entry 컴포넌트
텍스트 값을 입력 받게 해주는 component이다.
width를 입력하여 너비를 조절할 수 있다.
화면에 무엇인가를 보이게 하고 싶다면 pack()으로 레이아웃을 준다.
input = tkinter.Entry(width = 10)
input.pack()
하지만 위의 코드를 실행하면, 빈 상자가 나타난다.
만약,
어떤 값을 입력받은 후, 그 값을 사용하고 싶다면
입력한 값을 문자열로 바꿔주는
get()함수를 써야 한다.
input = tkinter.Entry(width = 10)
input.pack()
input.get()
하지만 위 코드에서는 input.get()가 실행될 당시 input에 어떤 값도 입력되지 않기 때문에 결과창에 변화는 없다.
이번에는 조금 업그레이드 된 연습문제를 풀어보자.
(연습문제) 버튼을 클릭하면 레이블에 적힌 글자가 입력창에 쓴 글자로 바뀌도록, 코드를 짜보세요!
import tkinter
window = tkinter.Tk()
window.title("Let's make GUI!")
window.minsize(width=300, height=300)
my_label = tkinter.Label(text="Olivia", font =("Arial", 24, "bold"))
my_label["text"] = "New text"
my_label.config(text = "another text")
my_label.pack()
def clicked():
print("버튼이 클릭되었습니다.")
my_label.config(text = input.get())
button = tkinter.Button(text="click", command = clicked)
button.pack()
input = tkinter.Entry(width = 10)
input.pack()
window.mainloop()
clicked 함수에서
my_label.config(text=input.get())으로 바꾸면 된다.
Entry 컴포넌트에 관해 더 많은 정보를 얻고 싶다면, tkinter 공식문서를 참조하자.
http://tcl.tk/man/tcl8.6/TkCmd/entry.htm
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[27-7 파이썬] Tkinter 레이아웃 매니저 pack(), place(), grid(), 여백주기 padding (0) | 2022.09.15 |
---|---|
[27-6 파이썬] Tkinter Tk, Label, Entry, Text, Scale, Checkbutton, Radiobutton, Listbox, insert(), END (0) | 2022.09.15 |
[27-4 파이썬] **kwargs(Many Keyworded Arguments) (0) | 2022.09.13 |
[27-3 파이썬] *args(Many Positional Arguments), 가변인수, 가변위치인수 (0) | 2022.09.13 |
[27-2 파이썬] 기본값을 갖는 Keyword Arguments (1) | 2022.09.13 |