C-log

👩‍🏫class : ✨15week 본문

📘Python/👩‍🏫class

👩‍🏫class : ✨15week

4:Bee 2023. 12. 9. 06:40
728x90

 

 

[Python] : 위젯의 배치와 크기 조절

위젯의 배치와 크기 조절 - 윈도우 창에 위젯을 여러 개 표시할 때 그 배치를 잘 고려해 화면을 효과적으로 표현할 수 있습니다. - pack() 이나 place() 함수를 사용해 위젯을 화면에 출력합니다. - 기

ohju.tistory.com

padx와 pady -> padx와 pady를 활용해서 버튼 응답 만들기

from tkinter import *
root = Tk()

root.title("위젯배치")

btn1 = Button(root, text ="버튼배치1") #command를 추가해볼 
btn2 = Button(root, text ="버튼배치2") #이미지로 변환 해보기
btn3 = Button(root, text ="버튼배치3")

btn1.pack(side=LEFT, padx = 20, pady = 30)
btn2.pack(side=LEFT, padx = 20, pady = 30)
btn3.pack(side=LEFT, padx = 20, pady = 30)

root.mainloop()

ipadx와 ipady 활용해서 버튼 생성하기 -> ipadx와 ipady를 활용해서 버튼 응답만들기, 이미지로 변환해보기

from tkinter import *
root = Tk()

root.title("위젯배치")

btn1 = Button(root, text ="버튼배치1") #command를 추가해볼 
btn2 = Button(root, text ="버튼배치2") #이미지로 변환 해보기
btn3 = Button(root, text ="버튼배치3")

btn1.pack(side=LEFT, ipadx = 20, ipady = 30)
btn2.pack(side=LEFT, ipadx = 20, ipady = 30)
btn3.pack(side=LEFT, ipadx = 20, ipady = 30)

root.mainloop()

랜덤으로 label text 변동하기 -> 해당 단어에 맞는 그림이 나오게 생성

from tkinter import *
import random

def proc() :
    p = random.choice(["냉장고","TV","스마트폰","자동차","노트북"]) #그냥 리스트 배열로 생성해보
    lbl1.configure(text = p)

def c_del():
    lbl1.configure(text="")
    proc() #지우기를 통해서 리스트에 있는 값을 삭제하기

root = Tk()
root.title("버튼")
root.geometry("300x100")

lbl1 = Label(root, text ='당첨 상품은?')
lbl1.pack()
#label을 image로 랜덤 생성하
btn1 = Button(root, text = "추천하기", width=10, height=2, command=proc)
btn1.pack(side = LEFT, padx =30) #place()

btn2 = Button(root, text = "지우기", width=10, height = 2, command=c_del)
btn2.pack(side = LEFT, padx = 5)
root.mainloop()

 

이미지 생성하기 연습_1

from tkinter import *
window = Tk() #이전에는 window대신 root를 사용했었다.

#타이틀
window.title('이미지 표시')
#창 크기
window.geometry('1150x700')

#이미지 변수 생성과 저장
#고양이 이미지도 함께 같이 보여주기
dog = PhotoImage(file="dog.gif")
cat = PhotoImage(file="cat.gif")
#레이블 위젯
lbl_dog = Label(window, image = dog)
lbl_cat = Label(window, image = cat)
lbl_dog.place(x = 20, y =20)
lbl_cat.place(x=500, y=20)

window.mainloop()

이미지 생성하기 연습_2 -> 이미지 생성하기 연습_1과의 차이를 살펴보기

from tkinter import *
from tkinter import messagebox

#함수 선언
def clickImg(e):
    messagebox.showinfo("동물이름","고양이")

#윈도우 만들기
window = Tk()
window.title('동물사진')
window.geometry('550x550')

#레이블 위젯에 이미지 보여주기
img = PhotoImage(file='cat.gif')
Plbl = Label(window, image = img) #Label에 이미지를 만들어 낼 수 있다.
#이미지를 보여주고 해당 가격 표를 생성할 수 있다.

#레이블 위젯 마우스 이벤트 함수 호출하기
Plbl.bind("<Button>",clickImg)
#Plbl.place(x=20,y=20)
Plbl.pack()

window.mainloop()


이미지를 가지고 Game 만들기 -> 분석하기

import turtle, random
#게임을 응용하는 시험이 나올 수도 있음
sc = turtle.Screen()
image1 = "car1.gif"
image2 = "car2.gif"
sc.addshape(image1) #addshape의 역할은? turtle의 shape 모양을 추가하는 코드
sc.addshape(image2)

def player(image, no):
    t = turtle.Turtle()
    t.shape(image) #선을 그려내는 화살표를 이미지로 만들었다.(addshape으로 값을 지정해야한다.)
    t.pensize(3)
    t.penup() #위치를 지정할 때는 팬을 들어서 움직이는 선을 보이지 않게 한다.
    t.goto(-sc.canvwidth, -200*(no-1)) #위치 지정
    return t

t1 = player(image1,1)
t2 = player(image2, 2)
t1.pendown()
t2.pendown()
t1.speed(1)
t2.speed(1)

for i in range(50):
    d1 = random.randint(1,60)
    t1.fd(d1)
    d2 = random.randint(1,60)
    t2.fd(d2)
    if (t1.pos()[0] > sc.canvwidth or
        t2.pos()[0] > sc.canvwidth): #width인 넓이 값을 가져온다. pos()[0]는 x이다.
        if(t1.pos()[0] > t2.pos()[0]):
            print("토끼 승!")
        else :
            print("거북이 승!")
        break;
print("경기 끝!")

728x90
Comments