본문 바로가기
프로그래밍/파이썬

[파이썬 GUI] tkinter 2(Label을 이용하여 글자, 이미지 표현하기)

by 인성패밀리 2022. 10. 14.
반응형

GUI에서 글자를 나타내게 하고 싶으면 Label class를 사용해야 합니다. Label class는 글자 뿐만 아니라 이미지도 나오게 할 수 있습니다. 

 

오늘 알아볼 주제입니다.

1. Label class 기본 사용법

2. Label 나오게 하기

3. Label에서 사용하는 속성들

4. 이미지 나오게 하기

 

1. Label class 기본 사용법

from tkinter import *

gui = Tk()
gui.title("Label 사용하기")
gui.geometry("400x300+300+300")
gui.resizable(False, False)

# Label 사용법 1
Label(gui, text="string")

gui.mainloop()

Label(gui, text="string")

-> gui의 공간에 string이라는 문자열을 생성하는 것입니다. 근데 이렇게 하면 도데체가 창만 나오고 string이라는 글자는 도데체 보이지 않습니다. 

 

 

2. Label 나오게 하기

from tkinter import *

gui = Tk()
gui.title("Label 사용하기")
gui.geometry("400x300+300+300")
gui.resizable(False, False)

# Label 사용법 1
Label(gui, text="string").pack()

gui.mainloop()

Label(gui, text="string").pack()

-> pack method를 사용하면 비로소 보이게 됩니다. 이렇게 뭔가 만든다고 해서 바로 보이지 않습니다. pack() 말고도 grid(), place()가 있는데 이 것에 대해서는 다음 포스팅에서 소개하겠습니다. 이번 시간은 Label을 사용하는 방법에 대해서만 기재하겠습니다.

 

추가적으로 사용하는 방법을 알아보겠습니다.

from tkinter import *

gui = Tk()
gui.title("Label 사용하기")
gui.geometry("400x300+300+300")
gui.resizable(False, False)

# Label 사용법 1
Label(gui, text="string").pack()

# Label 사용법 2
val = Label(gui, text="string2")
val.pack()

# Label 사용법 3
val2 = Label(gui, text="string3").pack()

gui.mainloop()

사용법 2처럼 객체를 변수에 저장한 다음에 pack()으로 나타내게 할 수 있습니다. 이러한 방법의 장점은 Label 객체의 속성을 변경할 수 있습니다.

 

그러나 사용법 3번은 나오긴 나오는데 굳이 추천하지 않는 방법입니다. 아주 이상한 의미입니다. Label 객체를 나오게 한 것이 변수에 들어간 것입니다. 이 방법을 사용하면 속성 값을 전혀 변경시킬 수 없습니다. 속성을 변경하는 방법은 추후 버튼 사용법과 같이 올려보겠습니다.

 

 

3. Label에서 사용하는 속성들

다양한 속성들이 있지만 사실 맨날 쓰던 것만 쓰는지라 알았던 것도 까먹게 되었습니다. 실제로 사용하면서 자주 사용되는 속성들만 보겠습니다.

from tkinter import *

gui = Tk()
gui.title("Label 사용하기")
gui.geometry("400x300+300+300")
gui.resizable(False, False)

val = Label(gui,
            text="string2",
            font=('consolas', 20, 'italic'),
            background="#00ff00",
            foreground="#ff0000")
val.pack()

gui.mainloop()

text="string2"

-> 문자를 나타내게 할 수 있는 속성입니다.

 

font=('consolas', 20, 'itailc')

-> 글꼴은 consolas, 글씨 크기 20, 글씨체는 이텔릭체

-> 글꼴은 시스템 글꼴을 사용할 수 있습니다. 

-> 반드시 튜플 형태로 전달해야 합니다.

 

background="##00ff00"

-> 글씨의 배경색을 말합니다. 색을 영어로 작성해도 되며 위 처럼 RGB 코드를 사용해도 됩니다.

 

foreground="#ff0000"

-> 글씨의 색을 말합니다. 색을 영어로 작성해도 되며 위 처럼 RGB 코드를 사용해도 됩니다.

 

 

4. 이미지 나오게 하기

from tkinter import *

gui = Tk()

img = PhotoImage(file="../../img_sample.png")
val = Label(gui, image=img)
val.pack()

gui.mainloop()

img = PhotoImage(file="../../img_sample.png")

-> file에 이미지 경로를 적어야 합니다. 절대 경로와 상대 경로로 표현이 가능한데 제 블로그 리눅스 부분에 절대 경로와 상대 경로에 대해서 설명된 부분이 있지만 리눅스 기준이라 리눅스를 경험하지 않은 분은 헷갈릴 수 있으나 개념은 보고 오시길 바랍니다.

-> 절대 경로란 절대적인 파일의 위치를 말합니다. 어떤 파일의 속성창을 누르면 C:/ 이런식으로 된 경로가 있는데 이것이 파일이 있는 위치의 경로를 말합니다.

-> 상대 경로란 내가 어디 있는지에 따라서 상대적으로 달라지는 경로를 말합니다. [../] 이런 식으로 표현하면 뒤로 간다는 의미입니다.

-> 만약 같은 위치에 있다면 그냥 파일 이름을 적으면 됩니다.

 

val = Label(gui, image=img)

-> 아까 생성한 이미지를 속성 값으로 설정해줍니다. pack이나 grid, place를 사용하면 나오게 됩니다.

 

 

모쪼록 이 글을 읽고 도움이 되셨으면 좋겠습니다. 감사합니다.

반응형

댓글