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

[파이썬 Tkinter GUI 만들기] 9. 라디오버튼 value 값 얻는 법

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

최종 목표는 아래 그림이다. 

 

1차 선택 후 분기를 만들어야 한다. 대푯값을 선택했을 때와 변산도를 선택했을 때의 value 값을 얻어야 한다. 나는 알아서 value 에 값이 저장되는 줄 알았는데 그게 아니었다. 변수를 하나 더 만들어주어야 한다. 

 

rad_1 이라는 변수를 만들어 주었다. tk.IntVar() 을 사용해야 한다. 그리고 나서 라디오버튼 안에 variable 옵션을 지정한다. 두 라디오버튼에 같은 변수안 rad_1을 넣어주었다. 만약 대푯값이라는 라디오버튼을 클릭하면 rad_1 에 1이 저장되고, 변산도를 클릭하면 2가 저장된다. 코드 일부만 실행하여 테스트해보니 잘 입력된다. 

 

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 value ==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')

    root.update() 


root.mainloop()
반응형

댓글