Python.use(better,Tkinter)《07》Grid

記事一覧 Python.use(better, Tkinter)《Python3.1》
《こちらに移動しました》2006年11月28日 (火)

Grid

《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1993/11/25 ● 第1版♪2006/10/28

Tkinter によるオブジェクト指向プログラミングへの扉を開きます。
※ Tcl/Tk で作成した例題を、Python3.1 で再構成しました。

部品 Grid

格子 Grid を使って部品を配置する方法を紹介します。

■ 事例1:

次のコードを実行すると、ウィンドウが現われます。

>>> ex_grid1()

def ex_grid1():
    root = Tk()
    root.title("grid(row=, column=)")
    root.geometry("240x240")

    dim = 4; bd = 2; wh = 50
    for e in range(dim*dim):
        ry, cx = e//dim, e%dim
        w = Frame(root,
            borderwidth=bd, relief=RIDGE, width=wh, height=wh, bg="cyan",  
            )
        w.grid(sticky="NEWS", row=ry, column=cx)
        w = Label(root, text="%d,%d"%(ry, cx))
        w.grid(row=ry, column=cx)

    root.mainloop()
■ 事例2:

次のコードを実行すると、ウィンドウが現われます。

>>> ex_grid2()

def ex_grid2():
    root = Tk()
    root.title("grid(rowspan=, columnspan=)")
    root.geometry("240x240")

    dim = 4; bd = 2; wh = 50
    for e in range(dim*dim):
        ry, cx = e//dim, e%dim
        w = Frame(root,
            borderwidth=bd, relief=RIDGE, bg="cyan",
            width=wh, height=wh,
            )
        w.grid(sticky="NEWS", row=ry, column=cx)
        w = Label(root, text="%d,%d"%(ry, cx))
        w.grid(row=ry, column=cx)

    dim = 2
    for e in range(1, dim*dim):
        ry, cx = e//dim, e%dim
        w = Frame(root,
            borderwidth=bd, relief=RIDGE, bg="yellow",  
            )
        w.grid(
            sticky="NEWS",
            row    =ry  , column    =cx  ,
            rowspan=ry+1, columnspan=cx+1,
            )
        w = Label(root, text="%d,%d"%(ry, cx))
        w.grid(row=ry, column=cx)

    root.mainloop()
《NOTE》Grid
# /Python-3.0/Lib/tkinter/__init__.py
class Grid:
    def grid_configure(self, cnf={}, **kw):
    grid = configure = config = grid_configure
  • 格子を使って、任意の widget を配置できます。
keyword arguments
row= 横行の位置を指定します
column= 縦列の位置を指定します
rowspan= 横行の範囲(格子数)を指定します
columnspan= 縦列の範囲(格子数)を指定します


関連記事

Last updated♪2009/12/09