すべて!私の個人的なプロジェクトとして、私はtkinkterのダイスロールアニメーションをif文だけを辞書の値に変換することを試みています。私は本質的にこれをやっている:辞書値から関数を取得する
def draw_dice(*args):
w,h = 23, 23
x,y,r = 2,2,5
c = tk.Canvas(root,width=w,height=h,bg='white')
dots = {
'dot0':None,
'dot1':c.create_oval(x, y, x + r, y + r, fill='black'),
'dot2':c.create_oval(x + 16, y, (x + 16) + r, y + r, fill='black'),
'dot3':c.create_oval(x, y + 8, x + r, (y + 8) + r, fill='black'),
'dot4':c.create_oval(x + 8, (y + 8), (x + 8) + r, (y + 8) + r, fill='black'),
'dot5':c.create_oval(x + 16, (y + 8), (x + 16) + r, (y + 8) + r, fill='black'),
'dot6':c.create_oval(x, y + 16, x + r, (y + 16) + r, fill='black'),
'dot9':c.create_oval(x + 16, y + 18, (x + 16) + r, (y + 16) + r, fill='black')
}
for arg in args:
dots.get(arg)
return c
コードは実行されますが、出力が期待どおりではありません。関数に渡された* argsの値は、
'dot0'、 'dot1' ...、 'dot9' または単に 'dot1'になります。
私の別の機能の中で、返されたc(キャンバス)をリストに追加して、さまざまな作成されたダイスフェイスをシャッフルして、ローリングダイスをアニメーション化します。
しかし、これは問題ではありません。問題はこの機能から来ています。
「dot0」:なし、「DOT1」:1、「dot2」:など2、奇数
何かがあるんデバッガを実行した後、私は、各キーの値は次のようにしていることを発見しました私はこのデータ構造を間違って使用している可能性があります。どんな助けでも大歓迎です!