파이썬/파이썬(python) 중급

[27-5 파이썬] Tkinter 옵션 넣는 방법, Button, Entry 컴포넌트 추가하기

Olivia-BlackCherry 2022. 9. 14. 20:13
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

 

entry manual page - Tk Built-In Commands

NAME entry — Create and manipulate 'entry' one-line text entry widgets SYNOPSIS STANDARD OPTIONS -background or -bg, background, Background -borderwidth or -bd, borderWidth, BorderWidth -cursor, cursor, Cursor -exportselection, exportSelection, ExportSel

tcl.tk