ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python: Window programming Tkinter 라이브러리 정리 2
    Python 2021. 4. 16. 19:50
     

    Python: Window programming Tkinter 라이브러리 정리 1

    < Tkinter란? > < Tkinter 라이브러리 구성요소 > 1. 윈도창 조절 from tkinter import * # Tk객체 생성 window =Tk() window.title("연습하기") # 기본창 사이즈 window.geometry("400x100") # 창 크기 조절하..

    seungjuitmemo.tistory.com

     

    1. 마우스 이벤트 처리

     

    from tkinter import *
    from tkinter import messagebox
    
    def clickLeft(event):
        messagebox.showinfo("마우스", "마우스 왼쪽 버튼이 클릭됨")
    
    def clickRight(event):
        messagebox.showinfo("마우스", "마우스 오른쪽 버튼이 클릭됨")
    
    window = Tk()
    window.bind("<Button-1>", clickLeft)
    window.bind("<Button-3>", clickRight)
    window.mainloop()

     

     

     

    2. 마우스 클릭 이벤트 이미지에 바인딩하기

    from tkinter import *
    from tkinter import messagebox
    
    def clickImage(event):
        messagebox.showinfo("이미지", "이미지가 클릭되었습니다.")
    
    
    window = Tk()
    photo = PhotoImage(file="gif/gingerbread.gif")
    label = Label(window, image=photo)
    label.bind("<Button>", clickImage)
    label.pack(expand=1, anchor=CENTER)
    window.mainloop()

     

     

     

    3. event 매개변수를 활용한 마우스 이벤트 처리

    마우스 클릭시 어떤 마우스가 클릭되었는지 보여주고 클릭한 좌표출력

    from tkinter import *
    
    def clickMouse(event):
        text = ""
        if event.num == 1:
            text += "마우스 왼쪽 버튼이"
        elif event.num == 3:
            text += "마우스 오른쪽 버튼이"
        text += " ({}, {})에서 클릭됨".format(event.x, event.y)
        label.configure(text=text)
    
    
    window = Tk()
    window.geometry("400x400")
    label = Label(window, text=" 여기가 바뀝니다.")
    label.pack(expand = 1, anchor=CENTER)
    window.bind("<Button>", clickMouse)
    window.mainloop()
    

     

     

     

    4. 키보드 이벤트의 기본 처리

     

    from tkinter import *
    from tkinter import messagebox
    
    def keyEvent(event):
        messagebox.showinfo("키보드 이벤트", "눌린 키: " + chr(event.keycode))
    
    
    window = Tk()
    window.bind("<Key>", keyEvent)
    window.mainloop()

     

     

     

    5. 메뉴 생성하기

     

    from tkinter import *
    
    window = Tk()
    window.geometry("400x400")
    mainMenu = Menu(window)
    window.config(menu=mainMenu)
    fileMenu = Menu(mainMenu)
    mainMenu.add_cascade(label="파일", menu=fileMenu)
    fileMenu.add_command(label="열기")
    fileMenu.add_separator()
    fileMenu.add_command(label="종료")
    window.mainloop()

     

     

     

    6. 메뉴를 선택하면 동작할 수 있도록 코드 추가

    from tkinter import *
    from tkinter import messagebox
    
    def func_open():
        messagebox.showinfo("메뉴선택", "열기 메뉴를 선택함")
    def func_exit():
        window.quit()
        window.destroy()
    
    window = Tk()
    
    mainMenu = Menu(window)
    window.config(menu=mainMenu)
    
    fileMenu = Menu(mainMenu)
    mainMenu.add_cascade(label="파일", menu=fileMenu)
    fileMenu.add_command(label="열기", command=func_open)
    fileMenu.add_separator()
    fileMenu.add_command(label="종료", command=func_exit)
    window.mainloop()

     

     

     

    7. 대화상자의 생성과 사용

    from tkinter import *
    from tkinter.simpledialog import *
    
    window = Tk()
    window.geometry("400x100")
    label = Label(window, text = "입력된 값")
    label.pack()
    value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue=1, maxvalue=6)
    label.configure(text=str(value))
    window.mainloop()

     

     

     

    8. 그림파일 선택하기

    from tkinter import *
    from tkinter.filedialog import *
    
    window = Tk()
    window.geometry("400x100")
    label = Label(window, text="선택된 파일 이름")
    label.pack()
    filename = askopenfilename(parent=window, filetypes= (("GIF 파일", "*.gif"),
                                                          ("모든 파일", "*.*")))
    label.configure(text=str(filename))
    window.mainloop()

     

     

     

    9. 그림 파일 저장하기

    from tkinter.filedialog import *
    
    def func_open():
        filename = askopenfilename(parent=window,  filetypes= (("GIF 파일", "*.gif"),("모든 파일", "*.*")))
        photo =PhotoImage(file = filename)
        label.configure(image=photo)
        label.image = photo
        
        
    def func_exit():
        window.quit()
        window.destroy()
    
    
    window = Tk()
    window.geometry("400x400")
    window.title("이미지 업로드하기")
    photo = PhotoImage()
    label = Label(window, image=photo)
    label.pack(expand=1, anchor=CENTER)
    
    mainMenu = Menu(window)
    window.config(menu=mainMenu)
    fileMenu = Menu(mainMenu)
    mainMenu.add_cascade(label="파일", menu=fileMenu)
    fileMenu.add_command(label="파일 열기", command=func_open)
    fileMenu.add_separator()
    fileMenu.add_command(label="종료", command=func_exit)
    window.mainloop()

     

    반응형

    댓글

Designed by Tistory.