Program Language/Python

[Python] 윈도우 띄우고 라벨, 버튼 만들기

야곰야곰+책벌레 2021. 8. 30. 16:44
728x90
반응형

Phython에서 Window 창을 띄우려면 tkinter 가 필요한데, 우분투에서는 띄워지지 않는 것 같다.

Windows에서도 Phython IDLE에서만 작동을 한다.

윈도를 띄우는 것은 아내와 같다.

from tkinter import *
window = Tk()
window.title("윈도우창 연습") # 윈도우 캡션 지정
window.geometry("400x100") # 윈도우 크기 지정
window.resizable(width=FALSE, height=FALSE) # 윈도우 크기 변경 금지
window.mainloop()

라벨을 추가해보자.

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

#Label(부모윈도, 옵션 ...)
label1 = Label(window, text="This is MySQL을")
# fg : foreground (글자색)
label2 = Label(window, text="열심히", font=("궁서체", 30), fg="blue")
# bg : background (배경색)
# anchor : 위젯의 위치 ( N, E, W, S 를 이용하여 만듬 NE, NW, E, SE, ... , CENTER)
label3 = Label(window, text="공부 중입니다.", bg="magenta", width=20, height=5, anchor=SE)

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

window.mainloop()

버튼을 만들어보자.

from tkinter import *
from tkinter import messagebox

def clickButton() :
    messagebox.showinfo('버튼 클릭', '버튼을 클릭했습니다.')

window = Tk()
window.geometry("200x200")
window.resizable(width=FALSE, height=FALSE)

# Button의 스타일과 버튼 클릭 시 실행되는 함수(clickButton)를 지정하였다.
button1 = Button(window, text="요기 눌러요", fg="red", bg="yellow", command=clickButton)
button1.pack(expand=1)

window.mainloop()

위젯 정렬은 pack() 함수의 옵션 중에서 수평으로 정렬하는 방법은 side=LEFT, RIGHT 방식이 있다.

from tkinter import *
window = Tk()

button1 = Button(window, text="버튼1")
button2 = Button(window, text="버튼2")
button3 = Button(window, text="버튼3")

#side=LEFT는 왼쪽부터 채워나가라는 옵션이다.
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)

window.mainloop()

상기의 Sample은 side=LEFT 옵션을 사용하였다. 오른쪽부터 채워가는 예제로 리스트와 for문을 사용해보자.

from tkinter import *
window = Tk()

btnList = [None] * 3

for i in range(0, 3) :
    btnList[i] = Button(window, text="버튼"+str(i+1))

#side=RIGHT는 오른쪽부터 채워나가라는 옵션이다.
for btn in btnList :
    btn.pack(sid=RIGHT)

window.mainloop()

상기 예제에서 pack() 함수의 옵션을 TOP 혹은 BOTTOM으로 변경하여 세로로 정렬하게 만들 수 있다.

더불어 padx, pady를 이용하여 위젯 사이에 여백을 줄 수도 있다.

# 상기 코드 생략
#side=TOP은 위부터 채우라는 것이고, padx, pady는 여백이다.
for btn in btnList :
    btn.pack(sid=TOP, fill=X, padx=10, pady=10)
    
window.mainloop()

 

728x90
반응형