Python의 Tkinter에서 Checkbutton을 동적으로 만들려고합니다.

*소개



지난번에서 Python Tkinter의 기본 부분을 썼습니다.
이번에는 Tkinter의 Checkbutton을 동적으로 작성하는 방법을 올립니다.

*흐름



간단한 사고 방식의 흐름도를.
1. Tkinter 틀을 만드는
2. Checkbutton의 결과(체크되어 있는지 여부)와 Checkbutton의 핸들을 포함하는 글로벌 변수를 준비
3. Checkbutton을 만들고 BooleanVar의 내용과 Checkbutton의 핸들을 글로벌 변수에 저장
이상입니다.

*코드



파이썬
#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter
import tkMessageBox


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")


#
# グローバル変数
#
hLabel = []             #ラベルのハンドルを格納します
hCheck = []             #チェックボックスのハンドルを格納します
CheckVal = []           #チェックボックスにチェックが入っているかどうかを格納します


#
# チェックボックスのチェック状況を取得する
#
def check(event):
    for n in range(len(CheckVal)):
        if CheckVal[n].get() == True:
            label = Tkinter.Label(text=u"チェックされています")
            label.place(x=100, y=20*n + 50)
        else:
            label = Tkinter.Label(text=u"チェックされていません")
            label.place(x=100, y=20*n + 50)

        #ラベルのハンドルを追加
        hLabel.append(label)


#
# チェックボックスを動的に作成
#
def make(ebent):
    #作成するチェックボックスの個数(Entryの値)を取得
    num = Entry1.get()

    #既出のチェックボックスやラベルを削除
    for n in range(len(hCheck)):
        hCheck[n].destroy()
        hLabel[n].destroy()

    #配列を空にする
    del CheckVal[:]
    del hCheck[:]
    del hLabel[:]

    #Entry1に入力された値分ループ
    for n in range(int(num)):
        #BooleanVarの作成
        bl = Tkinter.BooleanVar()

        #チェックボックスの値を決定
        bl.set(False)

        #チェックボックスの作成
        b = Tkinter.Checkbutton(text = "項目" + str(n+1), variable = bl)
        b.place(x=5, y=20*n + 50)

        #チェックボックスの値を,リストに追加
        CheckVal.append(bl)

        #チェックボックスのハンドルをリストに追加
        hCheck.append(b)



button1 = Tkinter.Button(root, text=u'Checkbuttonの作成',width=20)
button1.bind("<Button-1>",make)
button1.place(x=90, y=5)

button2 = Tkinter.Button(root, text=u'チェックの取得',width=15)
button2.bind("<Button-1>",check)
button2.place(x=265, y=5)

Entry1 = Tkinter.Entry(root, width=10)
Entry1.place(x=5, y=5)


root.mainloop()

위의 코드 실행 화면



좋은 웹페이지 즐겨찾기