Handling tkinter widget for option selection (check buttons, radio buttons, etc.)

Posted by


tkinter는 파이썬에서 GUI 프로그램을 만들 때 사용되는 라이브러리로, 다양한 위젯들을 제공합니다. 이 중에서 옵션을 선택하는 위젯을 다루는 방법을 알아보겠습니다. 대표적으로 체크버튼과 라디오버튼이 있습니다.

체크버튼은 여러 개의 옵션 중에서 여러 개를 선택할 수 있는 위젯이고, 라디오버튼은 여러 개의 옵션 중에서 하나만 선택할 수 있는 위젯입니다.

먼저, tkinter 모듈을 import 해야 합니다.

import tkinter as tk

체크버튼을 생성하기 위해서는 Checkbutton 위젯을 사용합니다. 아래는 체크버튼을 생성하고 그 값을 가져오는 예제 코드입니다.

root = tk.Tk()

var1 = tk.IntVar()
var2 = tk.IntVar()

cb1 = tk.Checkbutton(root, text="Option 1", variable=var1)
cb1.pack()

cb2 = tk.Checkbutton(root, text="Option 2", variable=var2)
cb2.pack()

def get_checked():
    if var1.get() == 1:
        print("Option 1 checked")
    if var2.get() == 1:
        print("Option 2 checked")

btn = tk.Button(root, text="Get checked options", command=get_checked)
btn.pack()

root.mainloop()

위 코드를 실행하면 체크버튼이 생성되고, 버튼을 누를 때 체크된 옵션들이 출력됩니다.

다음은 라디오버튼을 생성하는 예제 코드입니다. 라디오버튼은 Radiobutton 위젯을 사용합니다.

root = tk.Tk()
var = tk.StringVar()
var.set("Option 1")

rb1 = tk.Radiobutton(root, text="Option 1", variable=var, value="Option 1")
rb1.pack()

rb2 = tk.Radiobutton(root, text="Option 2", variable=var, value="Option 2")
rb2.pack()

def get_selected():
    print(var.get())

btn = tk.Button(root, text="Get selected option", command=get_selected)
btn.pack()

root.mainloop()

위 코드를 실행하면 라디오버튼이 생성되고, 버튼을 누를 때 선택된 옵션이 출력됩니다.

이처럼 tkinter를 사용하여 체크버튼과 라디오버튼을 다뤄서 옵션을 선택하는 GUI 프로그램을 만들 수 있습니다. 이를 응용하여 사용자에게 다양한 옵션을 선택할 수 있는 프로그램을 만들어보세요.

0 0 votes
Article Rating
21 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@understand1004
2 months ago

오지랖! 우선 우리 슨생님 감사 감사합니다. 너무 감사합니다. 덕분에 정말 많이 그리고 쉽게 잘 배웠습니다. 감사합니다.

구독자님들 아래 코드는 아래와 같이 효율?적으로 코딩할 수 있습니다.

# 개선전의 날 것 그대로 코드
# Radio Button
rv = IntVar()
rb1 = Radiobutton(win, text="1번", variable=rv)
rb2 = Radiobutton(win, text="2번", variable=rv)
rb3 = Radiobutton(win, text="3번", variable=rv)
rb1.pack()
rb2.pack()
rb3.pack()

# 개선된 코드
# Radio Button
rv = IntVar()
# 라디오 버튼 옵션
options = ["1번", "2번", "3번"]
# 라디오 버튼 생성 및 배치를 위한 반복문
for idx, option in enumerate(options, start=1):
rb = Radiobutton(win, text=option, value=idx, variable=rv)
rb.pack()

그럼 이만 ^^
도움이 되길 바랍니다. ~~ ^^

@soohyunjeon9348
2 months ago

❤❤❤대박~!! 이런 정리는 처음 봤습니다!! 좋은 영상 감사합니다!!!❤❤❤

@roka98
2 months ago

선생님 혹시 TKINTER의 TTK TREEVIEW 도 강의해 주시면 안될까요? 아무리 찾아봐도 한국에서 만든 강의는 거의 없는것 같네요 ㅜㅜ

@baye9127
2 months ago

감사합니다 잘배웠어요

@calender4217
2 months ago

좋은 강의 감사합니다
20:36 체크버튼
27:14 콤보박스(리스트)

@spectrum8200
2 months ago

Listbox에서 복수 선택시 받아오는 걸 해봤는데용

def choice():

ch_list=[]

ch_text=lb.curselection()

for i in ch_text:

ch_list.append(i)

print(i)

lab.config(text=ch_list)

ch_list.append(i) 없이
print(i)하면 선택한 버튼이 뭔지 잘 나오는데
lab.config(text=i)하면 선택한 버튼 중 마지막 버튼만 나옵니당 (예를 들어 2,3 선택시 3만 나와용)

그래서 list.append를 해서 lab에서도 선택한 버튼이 나오게 하긴 했는데

왜 lab.config(text=i)에서는 선택한 마지막 버튼만 나오는데
print(i)에서는 다 나오는지…명확히 이해가 안되서용..
똑같이 반복문 안에 있으면 둘다 선택한 버튼이 다 나오던지… 마지막 버튼만 나오던지.. 동일한 결과가 나올 걸 예상했는데
왜 다르게 나오는지를 모르겠용ㅠㅠ

혹시 아시나요?ㅜㅜ

@hyochang_eng
2 months ago

정말 많이 배웠습니다.

@conel42
2 months ago

콤보박스는 선택 되었다는 조건문을 알려주지 않으면 아무 짝이 쓸모가 없습니다 ㅠㅠ

@conel42
2 months ago

콤보 박스 2번째가 선택 되었다는 조건문을 어떻게 해야 하나요?
if cb_list==[1] True:
이렇게 하니 오류가 납니다.

@user-pb7vc4iy5b
2 months ago

btn.config(command = click)
라고 하셧는데…btn.config(command = click()) 와 차이점 이 무엇일까요? click대신 click()를 넣었습니다.
()를 넣으니 none으로 나타납니다만..
GUI 사용함에 있어 click()를 넣으니 버튼을 누르기도 전에 바로 실행이 되어버려서 난감하네요
그렇다고 ()를 안넣으니 오류가나고..
a=1
b=2
def add(a, b):
c = a + b
print(c)
…생략
btn_1.config(command = add)
>>> add() missing 2 required positional arguments: 'a' and 'b' 라고 오류가 납니다.

def add(a, b):

c = a + b
print(c)

…생략

btn_1.config(command = add(1,3))

의 경우 버튼을 누르기도 전에 결과값이 나와버립니다.

@user-pb7vc4iy5b
2 months ago

똑같이 했는데 아래와 같이 콤보 박스만 안되고 있습니다.
from tkinter.ttk import * 도 선언했구요..
왜 이럴까요?

raceback (most recent call last):

File "d:Work SaveCording7강_box.py", line 12, in <module>

cmb = ComboBox(win)

TypeError: 'Table' object is not callable

@craft9885
2 months ago

강의 영상 잘 보고 있습니다.!! 혹시 내가 필요한 특정 라이브러리가 있을때, 어떻게 검색해서 라이브러리를 어떻게 찾는지, 그 중 필요한 함수를 어떻게 선별하는지 에 대해서도 간략하게 강의영상 부탁드려도 될까요..? 왠만한 코드가 전부 외부 라이브러리에서 들고오는것 같고, 그 중 필요한 함수를 선별하는 것이 생각보다 어렵네요..

@user-rp7oh5vu7w
2 months ago

선생님 동영상 보면서 따라하고 있는데요!
혹시 옵션선택 버튼을 누른후에 자동으로 창을 닫게 만들수도 있을까요?
선택한후에 x표시를 눌러야만 창을 닫을 수 있는걸까요? 궁금합니다!
항상 좋은강의 감사합니다:)

@user-pe9hz7gr7u
2 months ago

파이션 으로 하신건가요

@user-mg1to5lj9g
2 months ago

영상을 통해 많이 배우고있어요. 감사합니다.
여러가지 응용프로그램을 만들다보니 막히는게 여러개 생기지만
검색을 하면서 풀어가고있습니다.
그런데, 셀레니움에서는 잘되던게
tkinter에서는 잘 안되는게 있어 문의 드려요.
예를들어, 페이지를 찾을수 없다는 메세지가 발생되면
반복문 동작이 멈춰 버립니다.
셀레니움에서는 메세지가 떠도 새로고침을 계속하는데,
tkinter에서는 잘 안되네요 ㅠㅠ .

@user-ue1ds2yx1j
2 months ago

시작버튼으로 프로그램 시작했을때 작업은 실행되는데 끝날때까지 창이 응답 없음이 뜨면서 다른 버튼이나 창 종료가 안되는데 왜그런걸까요?? 작업 모두 완료하면 또 눌러지네요..

@user-lq6lm8fh6m
2 months ago

근데 만약 버튼같은 위젯을 100개 정도 생성해야 한다면 place로 할거면 하나하나 다 따로 변수로 지정하는 방법밖에 없나요?ㅠㅠ
너무 많은데 ….ㅠㅠ

@user-be4xu7ep5i
2 months ago

안녕하세요! 궁금한게 있는데 tkinter로 창을 숨길 수 있나요? simpledialog를 사용할때 옆에 창이 뜨는게 번거로워서요

@heolim30
2 months ago

제가 이것저것 다알아보았는데 화면을 인식하고 자동 클릭 되는 프로그램은
없더라구요. 꼭 한번 봐주시길 간절히 요청 드립니다.

@heolim30
2 months ago

팀뷰로 원격접속 하시어 응용 가능한지 한번 봐주실수 없을까요?