>>569
1 の StringVar は、StringVar の中身を変更すると
StringVar と対応付けられたウィジェットも自動で書き換わるという仕組み
以下を対話型プロンプトから試してみて

>>> from Tkinter import *
>>> root = Tk()
>>> svar = StringVar()
>>> b = Button(text='', textvariable=svar)
>>> b.pack()
>>> svar.set('Hello')
>>> svar.set(u'こんにちは')

2 は簡単そうに見えるけど実は相当難しい(クロージャってやつ)
ボタンの生成時に make_cmd(x) を実行しているのがポイントで、
make_cmd の返り値である無名関数はボタンを生成したときの番号( 0, 1, 2, 3 )を記憶している

わけわかんなかったら次みたいに素直に書くのもあり

def button0_onclick(): ...
def button1_onclidk(): ...