반응형
드디어 다 만들었다.
코드를 좀 정리해보았다. grid 의 열 별로 코드를 모았다. 폰트도 따로 추렸고, tkinter.font 를 불러와주어야한다.
import tkinter as tk
import tkinter.filedialog #이걸 따로 추가해야된다. 왜인지 모르겠음;
import tkinter.font #이걸 따로 추가해야된다. 왜인지 모르겠음;
import pandas as pd
import os
#윈도우 생성
root=tk.Tk()
#전체 이름
root.title('파일 여는 프로그램')
#창 크기 +붙은 부분은 좌상단 떨어진 위치
root.geometry("880x450+100+100")
#사전 설정값들
mywidth1=12
mywidth2=5
mygreen="#4EA346"
myfont1=tk.font.Font(family="맑은 고딕", size=15)
#변수들
filename=""
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():
global result
if rad_2.get() ==3 :
result='mean:'+str(df1.mean(axis=1)[0])
elif rad_2.get() ==4 :
result='median:'+ str(df1.median(axis=1)[0])
elif rad_2.get() ==5 :
result='std:'+ str(df1.std(axis=1)[0])
elif rad_2.get() ==6 :
result= 'mad:'+str(df1.mad(axis=1)[0])
path=os.path.dirname(filename)+'/'+'my_result.txt'
file = open(path, 'w')
file.write(result+'\n날짜:'+ent41.get()+'\n작성자:'+ent51.get())
file.close()
def radmake1():
global rad21
rad21=tk.Radiobutton(root, text="평균",font=myfont1,
value=3,indicator=False,selectcolor=mygreen,bg='gray',width=mywidth1,variable=rad_2)
rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')
global rad22
rad22=tk.Radiobutton(root, text="중앙값",font=myfont1,
value=4,indicator=False,selectcolor=mygreen,bg='gray',width=mywidth1,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=myfont1,
value=5,indicator=False,selectcolor=mygreen,bg='gray',variable=rad_2,width=mywidth1)
rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')
global rad22
rad22=tk.Radiobutton(root, text="절대편차",font=myfont1,
value=6,indicator=False,selectcolor=mygreen,bg='gray',variable=rad_2,width=mywidth1)
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():
lab43.configure(text=ent41.get())
def ent2():
lab53.configure(text=ent51.get())
#이미지 추가
file_img=tk.PhotoImage(file="경로/icon.png")
file_img=file_img.subsample(2,2)
#불변라벨
#1열
lab00=tk.Label(root,text="파일 불러오기",font=myfont1,bg='white',fg="black",width=mywidth1)
lab00.grid(row=0,column=0,padx=5,pady=10)
lab10=tk.Label(root,text="1차선택",font=myfont1,bg='white',fg="black",width=mywidth1)
lab10.grid(row=1,column=0,padx=5,pady=10)
lab20=tk.Label(root,text="2차선택",font=myfont1,bg='white',fg="black",width=mywidth1)
lab20.grid(row=2,column=0,padx=5,pady=10)
lab30=tk.Label(root,text="추가 정보 입력",font=myfont1,bg='white',fg="black",width=mywidth1*2)
lab30.grid(row=3,column=0,padx=5,pady=10,columnspan=2) #여러 열 쓰기 위해 columnspan
lab40=tk.Label(root,text="날짜",font=myfont1,bg='white',fg="black",width=11)
lab40.grid(row=4,column=0,padx=5,pady=10)
lab50=tk.Label(root,text="작성자",font=myfont1,bg='white',fg="black",width=mywidth1)
lab50.grid(row=5,column=0,padx=5,pady=10)
#2열
button01 = tkinter.Button(root, overrelief="solid", command=openfile,bg="white",image=file_img)
button01.grid(row=0,column=1,padx=5,pady=10)
rad11=tk.Radiobutton(root, text="대푯값",font=myfont1,
value=1,indicator=False,selectcolor=mygreen,bg='gray',variable=rad_1,command=radmake1,width=mywidth1)
rad11.grid(row=1,column=1,padx=5,pady=10,sticky='w')
ent41=tk.Entry(font=myfont1,bg='#4EA346',width=mywidth1)
ent41.grid(row=4,column=1,padx=5,pady=10)
ent51=tk.Entry(font=myfont1,bg='#4EA346',width=mywidth1)
ent51.grid(row=5,column=1,padx=5,pady=10)
#3열
button42 = tk.Button(root,text=">>",font=myfont1, overrelief="solid",bg="white",command=ent1,width=mywidth2)
button42.grid(row=4,column=2,padx=5,pady=10)
button52 = tk.Button(root,text=">>",font=myfont1, overrelief="solid",bg="white",command=ent2,width=mywidth2)
button52.grid(row=5,column=2,padx=5,pady=10)
#4열
lab43=tk.Label(root,font=myfont1,bg='white',fg="black",width=mywidth1)
lab43.grid(row=4,column=3,padx=5,pady=10)
lab53=tk.Label(root,font=myfont1,bg='white',fg="black",width=mywidth1)
lab53.grid(row=5,column=3,padx=5,pady=10)
#5열 (그냥 칸막이)
lab44=tk.Label(root,font=myfont1,bg=None,fg="black",width=mywidth1)
lab44.grid(row=4,column=4,padx=5,pady=10)
lab54=tk.Label(root,font=myfont1,bg=None,fg="black",width=mywidth1)
lab54.grid(row=5,column=4,padx=5,pady=10)
#6열
button56 = tk.Button(root,text="파일 생성",font=myfont1, overrelief="solid",
command=savefile,bg="red")
button56.grid(row=6,column=5,padx=5,pady=10)
#라디오버튼
rad12=tk.Radiobutton(root, text="변산도",font=myfont1,
value=2,indicator=False,selectcolor=mygreen,bg='gray',variable=rad_1,command=radmake2,width=mywidth1)
rad12.grid(row=1,column=2,padx=5,pady=10,sticky='w')
#업데이트가 필요한 요소들
while True :
lab02=tk.Label(root,text=filename,font=myfont1,bg='white',fg="black",height=1,width=mywidth1*3)
lab02.grid(row=0,column=2,padx=5,pady=10,columnspan=3,sticky='ewsn')
root.update()
lab02.destroy()
root.mainloop()
반응형
'GUI 프로젝트 > 파일 불러온 뒤 자동수정 저장 (Tkinter)' 카테고리의 다른 글
[파이썬 Tkinter GUI 만들기] 22. 버튼누른 입력값만 적용하기 (0) | 2022.02.01 |
---|---|
[파이썬 Tkinter GUI 만들기] 21. 오류 제거하기 (0) | 2022.01.30 |
[파이썬 Tkinter GUI 만들기] 19. width 와 height 의 충격적? 의미 (0) | 2022.01.29 |
[파이썬 Tkinter GUI 만들기] 18. 결과 메모장으로 출력하기 (0) | 2022.01.29 |
[파이썬 Tkinter GUI 만들기] 17. 버튼 누르면 입력된 글 나오게 하기 (0) | 2022.01.29 |
댓글