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

[파이썬 Tkinter GUI 만들기] 10. While 문으로 분기 만들려다 실패하기

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

최종 목표는 아래 GUI 다. 

 

 

1차 선택에 대푯값 라디오 버튼을 누르면 2차선택에 평균, 중앙값이 나오게 하고 싶다. 변산도 라디오 버튼을 눌렀을 때는 표준편차, 절대편차가 나오게 하고 싶다. 

 

각 라디오버튼으로 부터 value 값을 받아서 if문을 짜고 while 문 안에 넣어주었다. 코드는 아래와 같다. 

 

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

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

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

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


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

#이미지 추가
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)


rad_1=tk.IntVar()

#라디오버튼
rad11=tk.Radiobutton(root, text="대푯값",font=('Arial 18 bold'), 
    value=1,indicator=False,selectcolor="#4EA346",bg='gray',variable=rad_1)
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)
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)

    if rad_1.get() ==1 :
        rad21=tk.Radiobutton(root, text="평균",font=('Arial 18 bold'), 
            value=1,indicator=False,selectcolor="#4EA346",bg='gray')
        rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')

        rad22=tk.Radiobutton(root, text="중앙값",font=('Arial 18 bold'), 
            value=2,indicator=False,selectcolor="#4EA346",bg='gray')
        rad22.grid(row=2,column=2,padx=5,pady=10,sticky='w')

    if rad_1.get() ==2 :
        rad21=tk.Radiobutton(root, text="표준편차",font=('Arial 18 bold'), 
            value=1,indicator=False,selectcolor="#4EA346",bg='gray')
        rad21.grid(row=2,column=1,padx=5,pady=10,sticky='w')

        rad22=tk.Radiobutton(root, text="절대편차",font=('Arial 18 bold'), 
            value=2,indicator=False,selectcolor="#4EA346",bg='gray')
        rad22.grid(row=2,column=2,padx=5,pady=10,sticky='w')


    root.update() 


root.mainloop()

 

실행은 되는데 계속 깜빡거리고, 두번째 2차선택 버튼들이 선택이 안된다. 당연한게 while 문으로 계속 업데이트 되고 있어 그렇다. 다른 방법을 찾아야 겠다. 

 

반응형

댓글