Hi Hi

'파이썬 모델'에 해당되는 글 1건

  1. 파이썬(python) - GUI에서 라디오 버튼 사용하기

파이썬(python) - GUI에서 라디오 버튼 사용하기

 


다른 GUI 프로그램들을 보면 슬라이더, 버튼, 체크 박스 등 매우 다양한 위젯들이 사용되니다. 이렇게 많은 위젯들이 있는 이유는 사용자가 입력하는 데이터의 종류를 프로그래머가 효율적으로 관리하고 통제하기 위해서 입니다.

GUI 프로그램에 있는 라디오 버튼은 라디오 버튼과 똑같이 작동합니다. 버튼 중 하나를 누르면 다른 버튼들은 자동으로 선택 해제됩니다.
몇 가지 옵션 중에서 단 하나만을 선택할 수 있습니다.


tkinter에서 라디오 버튼 생성하기

Label(app, text = "Depot").pack()
depot = Entry(app)
depot.pack()
Radiobutton(app, text = "cambridge, MA").pack()
Radiobutton(app, text = "cambridge, UK").pack()
Radiobutton(app, text = "Seattle, WA").pack()
Label(app, text = "Description:").pack()


각 위젯에 인자로 전달된 스트링으 인터페이스에서 라디오 버튼으로 보이게 됩니다.

라디오 버튼은 하나의 정보를 기록하기 위해 사용되므로 라디오 버튼은 하나의 데이터를 공유합니다.
이러한 정보를 모델이라고 합니다.

쉽게말해 한가지 라디오 버튼이 선택되면 모델을 새로운 값으로 갱신합니다.

모델이 변경되면 시스템이 다른 위젯들에게 알려줍니다.
tkinter 라이브러리 코드는 어떤 위젯이 어떤 모델을 사용하는지 기억하고 있다가 모델이 변경되면 위젯들에게 이 사실을 알려줍니다.

이 코드가 작동하는 방식에 대한 특별한 이름이 있습니다.

"모델 뷰 컨트롤"

- 모델은 저장된 데이터입니다.
- 뷰는 위젯에 대한 또 다른 멋진 이름입니다,
- 컨트롤러는 tkinter에 있는 코드로서, 모델이 변경되면 모든 뷰에게 이 사실을 알려줍니다.


라디오 버튼이 공유하는 모델을 생성합니다.
tkninter에서는 모델을 제어 변수라고 하며, 텍스트를 저장하는 변수 StringVar라고 합니다.

depot = StringVar() //StringVar는 7장의 IntVar와 매우 유사합니다. 차이점은 스트링 값을 저장한다는 것입니다.
depot.set(None)  // SringVar를 '값이 없음'을 나타내는 특별한 값인 None으로 설정합니다.
Radiobutton(app, text ="First Class", value ="First Class", variable = service).pack  
                                                                              //각 버튼에 명시적으로 값을 설정하는것이 중요합니다.
Radiobutton(app, text ="Next Business Day", value ="Next Business Day", variable = service).pack