본문 바로가기
GUI 프로젝트/파일 불러온 뒤 자동수정 저장 (Tkinter)

[파이썬 Tkinter GUI 만들기] 17. 버튼 누르면 입력된 글 나오게 하기

by 만다린망고 2022. 1. 29.
반응형

최종 목표는 아래 GUI 이다. 

 

 

버튼은 모두 만들어 놓은 상태이다. 화살표를 누르면 입력값이 나오게 해야한다. 먼저 입력값 라벨에 value에 입력한 값을 부여하는 함수를 만들었다. 

 

 

이 함수를 버튼의 command 에 입력했다. 

 

 

실행 결과는 아래와 같다. 

 

 

코드는 아래와 같다. 

 

import tkinter as tk
import tkinter.filedialog #이걸 따로 추가해야된다. 왜인지 모르겠음;
import pandas as pd
import os

#윈도우 생성
root=tk.Tk()

#전체 이름
root.title('파일 여는 프로그램')

#창 크기 +붙은 부분은 좌상단 떨어진 위치
root.geometry("1000x430+100+100")

filename=""
mywidth=8

rad_1=tk.IntVar()
rad_2=tk.IntVar()

def openfile():
    global filename
    filename=tk.filedialog.askopenfilename(initialdir = "C:/Users/Public",
        title = "open file", filetypes = (("text file","*.txt"),("all files","*.*")))

def savefile():
    path=os.path.dirname(filename)+'/'+'my_result.txt'
    df1.to_csv(path,sep=',',header=None)

def radmake1():
    global rad21
    rad21=tk.Radiobutton(root, text="평균",font=('Arial 18 bold'), 
        value=3,indicator=False,selectcolor="#4EA346",bg='gray',width=mywidth,variable=rad_2)
    rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')
    global rad22
    rad22=tk.Radiobutton(root, text="중앙값",font=('Arial 18 bold'), 
        value=4,indicator=False,selectcolor="#4EA346",bg='gray',width=mywidth,variable=rad_2)
    rad22.grid(row=2,column=2,padx=5,pady=10,sticky='w')
    #불러온 파일 내용을 데이터프레임에 입력
    global df1
    df1=pd.read_csv(filename,encoding='CP949',header=None)

def radmake2():
    global rad21
    rad21=tk.Radiobutton(root, text="표준편차",font=('Arial 18 bold'), 
        value=5,indicator=False,selectcolor="#4EA346",bg='gray',width=mywidth,variable=rad_2)
    rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')
    global rad22
    rad22=tk.Radiobutton(root, text="절대편차",font=('Arial 18 bold'), 
        value=6,indicator=False,selectcolor="#4EA346",bg='gray',width=mywidth,variable=rad_2)
    rad22.grid(row=2,column=2,padx=5,pady=10,sticky='w')
    #불러온 파일 내용을 데이터프레임에 입력
    global df1
    df1=pd.read_csv(filename,encoding='CP949',header=None)


def ent1():
    lab44.configure(text=ent42.get())


def ent2():
    lab54.configure(text=ent52.get())


#이미지 추가
file_img=tk.PhotoImage(file="경로/icon.png")
file_img=file_img.subsample(2,2)

button01 = tkinter.Button(root, overrelief="solid", command=openfile,bg="white",image=file_img)
button01.grid(row=0,column=1,padx=5,pady=10)

#불변라벨
lab00=tk.Label(root,text="파일 불러오기",font=('Arial 20 bold'),bg='white',fg="black",width=11)
lab00.grid(row=0,column=0,padx=5,pady=10)

lab10=tk.Label(root,text="1차선택",font=('Arial 20 bold'),bg='white',fg="black",width=11)
lab10.grid(row=1,column=0,padx=5,pady=10)

lab20=tk.Label(root,text="2차선택",font=('Arial 20 bold'),bg='white',fg="black",width=11)
lab20.grid(row=2,column=0,padx=5,pady=10)

lab30=tk.Label(root,text="추가 정보 입력",font=('Arial 20 bold'),bg='white',fg="black",width=20)
lab30.grid(row=3,column=0,padx=5,pady=10,columnspan=2) #여러 열 쓰기 위해 columnspan

lab41=tk.Label(root,text="날짜",font=('Arial 20 bold'),bg='white',fg="black",width=11)
lab41.grid(row=4,column=0,padx=5,pady=10)

ent42=tk.Entry(font=('Arial 20 bold'),width=mywidth,bg='#4EA346')
ent42.grid(row=4,column=1,padx=5,pady=10)

button43 = tkinter.Button(root,text=">>",font=('Arial 15 bold'), overrelief="solid", 
    bg="white",command=ent1)
button43.grid(row=4,column=2,padx=5,pady=10) 

lab44=tk.Label(root,font=('Arial 20 bold'),bg='white',fg="black",width=mywidth)
lab44.grid(row=4,column=3,padx=5,pady=10)

lab51=tk.Label(root,text="작성자",font=('Arial 20 bold'),bg='white',fg="black",width=11)
lab51.grid(row=5,column=0,padx=5,pady=10)

ent52=tk.Entry(font=('Arial 20 bold'),width=mywidth,bg='#4EA346')
ent52.grid(row=5,column=1,padx=5,pady=10)

button53 = tkinter.Button(root,text=">>",font=('Arial 15 bold'), overrelief="solid", 
    bg="white",command=ent2)
button53.grid(row=5,column=2,padx=5,pady=10) 

lab54=tk.Label(root,font=('Arial 20 bold'),bg='white',fg="black",width=mywidth)
lab54.grid(row=5,column=3,padx=5,pady=10)

button72 = tkinter.Button(root,text="파일 생성",font=('Arial 15 bold'), overrelief="solid", 
    command=savefile,bg="red")
button72.grid(row=8,column=10,padx=5,pady=10) 

#라디오버튼
rad11=tk.Radiobutton(root, text="대푯값",font=('Arial 18 bold'), 
    value=1,indicator=False,selectcolor="#4EA346",bg='gray',variable=rad_1,command=radmake1,width=mywidth)
rad11.grid(row=1,column=1,padx=5,pady=10,sticky='w')

rad12=tk.Radiobutton(root, text="변산도",font=('Arial 18 bold'), 
    value=2,indicator=False,selectcolor="#4EA346",bg='gray',variable=rad_1,command=radmake2,width=mywidth)
rad12.grid(row=1,column=2,padx=5,pady=10,sticky='w')

#업데이트가 필요한 요소들
while True :

    lab02=tk.Label(root,text=filename,font=('Arial 12 bold'),bg='white',fg="black",width=50,height=1)
    lab02.grid(row=0,column=2,padx=5,pady=10,columnspan=3)

    root.update() 

    lab02.destroy()

root.mainloop()
반응형

댓글