回答編集履歴
1
追記
answer
CHANGED
@@ -43,4 +43,36 @@
|
|
43
43
|
cbs[cb] = (row, col, var) # 必要な変数をwidgetに紐づけて保持しておく
|
44
44
|
|
45
45
|
root.mainloop()
|
46
|
+
```
|
47
|
+
|
48
|
+
teamiklさん提案のfunctools.partialを使った例
|
49
|
+
-----
|
50
|
+
```Python
|
51
|
+
from tkinter import *
|
52
|
+
from tkinter import ttk
|
53
|
+
import functools
|
54
|
+
|
55
|
+
root = Tk()
|
56
|
+
root.title('Checkbutton')
|
57
|
+
|
58
|
+
frame1 = ttk.Frame(root, padding=(10))
|
59
|
+
frame1.grid()
|
60
|
+
|
61
|
+
def after_cb(row, col, var):
|
62
|
+
print( f'{row+1},{col+1}={var.get()}')
|
63
|
+
|
64
|
+
# 1つのcheckbuttonを初期化
|
65
|
+
def init_check( frm, row, col):
|
66
|
+
var = BooleanVar()
|
67
|
+
var.set(False)
|
68
|
+
f = functools.partial(after_cb, row, col, var)
|
69
|
+
#print(id(f))
|
70
|
+
cb = ttk.Checkbutton( frm, padding=10, text=f'{row+1}x{col+1}', variable=var, command=f)
|
71
|
+
cb.grid(row=row, column=col)
|
72
|
+
|
73
|
+
for row in range(2): # 行
|
74
|
+
for col in range(3): # 列
|
75
|
+
init_check( frame1, row, col)
|
76
|
+
|
77
|
+
root.mainloop()
|
46
78
|
```
|