본문 바로가기
프로그래밍언어/Python

[Python] : 기본 위젯 활용

by 오주현 2021. 10. 27.
반응형
기본 위젯 활용
from tkinter import *

window = Tk()

window.mainloop()

- 위젯은 윈도우 창에 나올 수 있는 문자, 버튼, 체크박스, 라디오버튼 등을 의미합니다.

 

- tkinter은 파이썬에서 GUI 관련 모듈을 제공하는 표준 윈도우 라이브러리입니다.

 

- TK()는 기본이 되는 윈도우를 반환하는데 이를 루트 윈도우, 베이스 윈도우라고 합니다.

 

- 윈도우 창에 제목을 달고 크기를 지정할 수 있고 윈도우 창의 크기가 변경되지 않도록 고정시키는 방법이 있습니다.

 


from tkinter import *

window = Tk()
window.title("윈도우창 연습")
window.geometry("400x100")
window.resizable(width=FALSE, height=FALSE)
window.mainloop()

- title로 윈도우 창에 제목을 표시하고 geometry로 윈도우의 초기 크기를 400x100으로 지정했으며 resizable를 통해 가로와 세로의 크기가 변경되지 않도록 지정했습니다.


from tkinter import *

window = Tk()

label1 = Label(window, text = "COOKBOKK~~Python을")
label2 = Label(window, text = "열심히", font =("궁서체", 30),
               fg = "blue")
label3 = Label(window, text = "공부 중 입니다.", bg = "magenta",
               width = 20, height = 5, anchor = SE)

label1.pack()
label2.pack()
label3.pack()

window.mainloop

- 레이블 (Label)은 문자를 표현할 수 있는 위젯입니다.

 

- Label() 형식으로 사용하고 옵션으로 위젯을 다양하게 설정 가능합니다.

 

- 레이블 같은 위젯은 pack() 함수를 호출해야 화면에 표시됩니다.

 

- Label 함수가 레이블을 만들어주고 pack() 함수로 해당 레이블을 화면에 표시해 줍니다.

 

- text 옵션으로 글자 자체를 나타내고 font로 글꼴과 크기를 지정해 줄 수 있습니다.

 

- fg = 글자색, bg = 배경색을 지정합니다.

 

- anchor은 위젯이 어느 위치에 자리 잡을지 결정할 수 있고 N, NE, E, SE, S, SW, W, NW, CENTER 등 값을 사용할 수 있고 기본 값은 CENTER 입니다. 위에서 사용한 SE는 South East입니다.


from tkinter import *

window = Tk()

photo = PhotoImage(file = "gif/dog.gif")
label1 = Label(window, image = photo)

label1.pack()

window.mainloop()

- 레이블에는 글자 대신 이미지를 넣을 수도 있다. PhotoImage()는 GIF 파일만 지원하고 JPEG, BMP 등은 지원하지 않는다.


from tkinter import *

window = Tk()

button1 = Button(window, text = "파이썬 종료", fg = "red",
                 command = quit)

button1.pack()

window.mainloop()

- 버튼은 마우스로 클릭하면 눌리는 효과와 함께 지정한 작업이 실행되도록 하는 위젯입니다.

 

- 레이블과 달리 버튼을 눌렀을 때 어떤 작업을 하도록 설정해야 합니다.

 

- command 옵션은 버튼을 눌렀을 때 지정한 작업을 처리할 수 있습니다. quit 명령을 내렸으므로 버튼을 클릭하면 종료가 됩니다.


from tkinter import *
from tkinter import messagebox

def myFunc() :
    messagebox.showinfo("강아지 버튼", "강아지가 귀엽죠? ^^")

window = Tk()

photo = PhotoImage(file = "gif/dog2.gif")
button1 = Button(window, image = photo, command = myFunc)

button1.pack()

window.mainloop()

- 버튼에도 이미지를 넣을 수 있고 버튼을 누르면 실행 될 내용을 함수로 만들어서 실행할 수도 있습니다.

 

- myFunc()함수는 massagebox.showinfo(제목, 내용) 형식으로 화면에 메시지 상자를 출력한다.

- 강아지 사진을 누르면 강아지 버튼이 나타나게 된다.


from tkinter import *
from tkinter import messagebox

window = Tk()

def myFunc() :
    if chk.get() == 0:
        messagebox.showinfo("", "체크버튼이 꺼졌어요.")
    else:
        messagebox.showinfo("", "체크버튼이 켜졌어요")

chk = IntVar()
cb1 = Checkbutton(window, text = "클릭하세요", variable = chk,
                  command = myFunc)


cb1.pack()

window.mainloop()

- 체크버튼은 켜고 끄는데 사용하는 위젯입니다. 

 

- InVar()함수는 정수형 타입의 변수를 생성합니다.

 

- variable 옵션에 chk 변수를 사용하는데 체크버튼을 켜면 chk에 1을 대입하고 끄면 chk에 0을 대입합니다.

 

- 체크버튼을 켜거나 끄면 myFunc() 함수가 실행되도록 합니다.


from tkinter import *

window = Tk()

def myFunc() :
    if var.get() == 1:
        label1.configure(text = "파이썬")
    elif var.get() == 2:
        label1.configure(text = "C++")
    else :
        label1.configure(text = "Java")

var = IntVar()
rb1 = Radiobutton(window, text = "파이썬", variable = var, value = 1, command = myFunc)
rb2 = Radiobutton(window, text = "C++", variable = var, value = 2, command = myFunc)
rb3 = Radiobutton(window, text = "Java", variable = var, value = 3, command = myFunc)

label1 = Label(window, text = "선택한 언어 : ", fg = "red")

rb1.pack()
rb2.pack()
rb3.pack()
label1.pack()

window.mainloop()

- 라디오버튼은 여러 개 중에서 하나를 선택하는데 사용하는 위젯이다.

 

- myFunc() 함수는 var 변수값으로 맨 아래쪽 레이블의 텍스트를 변경합니다.

 

- 위젯명.configure (옵션 = 값)은 해당 위젯의 옵션값을 변경시켜 주는 함수이다. 그러면 즉시 위젯의 값이나 모양이 바뀝니다.

 

- 현재는 레이블의 글자를 변경시키도록 코딩되어 있습니다.


 

반응형

댓글