강의노트 Button

강의노트 • 조회수 415 • 댓글 0 • 수정 2개월 전  
  • 윈도우 프로그램
  • 윈도우 프로그램

버튼

버튼을 만들고 사용하는 방법을 예제들을 이용하여 알아본다.

예1

버튼을 위의 그림과 같이 생성한다.

from tkinter import *
def fun_quit(): #1
    win.destroy()
win = Tk() #2  
win.geometry('200x200') #3
but = Button(win, text='파이썬 종료', fg = 'red', command=fun_quit) #4
but.pack() #5
win.mainloop()
  1. 버튼에서 사용하는 명령을 함수로 만든다.
  2. 창을 만든다.
  3. 생성한 창의 크기는 '200x200'으로 한다.
  4. 버튼을 생성하고 텍스트는 '파이썬 종료'라고 쓰고 글자는 빨간색으로 명령어는 win.destroy(), 즉 생성된 창을 지운다.
  5. 생성한 버튼을 창에 붙인다.

예2

이미지를 읽어서 버튼에 넣는다. 그리고 버튼을 누르면 아래와 같은 새로운 메세지 창이 뜬다.

from tkinter import *
from tkinter import messagebox
from PIL import ImageTk, Image

def fun():
    messagebox.showinfo('이미지 테스트','ㅎㅎㅎ')
win = Tk()
photo = Image.open('./../data/images/tiger.bmp')   #1
im = ImageTk.PhotoImage(photo)   #2
but = Button(win, image = im, command= fun)  #3
but.pack()
win.mainloop()
  1. 이미지를 읽어 온다.
  2. 이미지를 포토 이미지로 만든다.
  3. 이미지를 버튼에 넣고(image=im) 명령은 fun함수(메세지 박스를 보여준다)

예3

두 개의 그림(클로버 1과 클로버 2)를 버튼을 누를때마다 바뀌는 프로그램을 만든다.

import tkinter as tk
count = 1
win = tk.Tk() 
win.geometry("400x300")  # Size of the window
bg = 'blue'         # change the day colour 
win.configure(background=bg) # default background of window
im1 = tk.PhotoImage(file = "./../data/images/clova_1.png")
im2 = tk.PhotoImage(file = "./../data/images/clova_2.png") 
def f_change():
    global count
    if(count % 2 == 0 ):
        b1.config(image=im1)
    else:
        b1.config(image=im2)
    count = count + 1
    
b1=tk.Button(win,image=im1,relief='flat',bg=bg,command=lambda:f_change())
b1.grid(row=1,column=1,padx=20,pady=10)
win.mainloop()  # Keep the window open
열 1 열 2

예4

하나의 버튼에 여려개의 그림을 그리는 방법

import tkinter as tk
import random 
count = 0
img = []
win = tk.Tk() 
win.title('Card Select')
win.geometry("400x300")  
bg = 'blue'         
win.configure(background=bg) 
for i in range(1,14):
    s = f"./../data/images/clova_{i}.png"
    im = tk.PhotoImage(file = s)
    img.append(im)
    
def f_change():
    im = random.choice(img)
    b1.config(image=im)
    
b1=tk.Button(win,image=img[0],relief='flat',bg=bg,command=lambda:f_change())
b1.grid(row=1,column=1,padx=20,pady=10)
win.mainloop()  
열 1 열 2 열 3

버튼의 command 함수에 변수를 추가해서 넘기려면 lambda함수를 사용해야 한다.

이전 글
다음 글
댓글
댓글로 소통하세요.