forで複数作成したcomboboxから、どれが変化したのかを識別して、
対応する内容をリストに反映したいと思います。
下記のようにして、変化した値を取得することはできたのですが、widgetの名前をトリガにして
何番目のcomboboxが変化したのかを確認しようと考えたのですが、エラーで上手くいきません。
エラー内容は、下記のようなもので、comboboxはreplaceできないことは理解したのですが、
print(mate_num.replace('.!labelframe3.mate_', ''))
AttributeError: 'Combobox' object has no attribute 'replace'
widget名に含まれる番号をキーにして、置き換えをしようと思ってたので、そこで止まってます。
これ以外の方法でもいいので、どのcomboboxが変化したのかを特定して、変数に落とす方法はないでしょうか?よろしくお願いします。
上半分は、今のところ確認用にPrintにしていますが、得られた数字の箇所のリストを変更するよにしようと考えてます。
def select_comb4(event):
print(event.widget.get()) # 変更したcomboboxの内容を取得
print(event.widget) # 変更されたwidgetの名前 これをキーにして何番目か特定したい
mate_num = root.nametowidget(event.widget)
print(mate_num.replace('.!labelframe3.mate_', ''))
プルダウンで選択するコンボボックスを配置
mate_no = ['' for j in range(20)]
for j in range(20): # 縦の行数
combo_box4 = ttk.Combobox(frame_DW, height=10, width=13, values=comb4, state='readonly',
textvariable=mate_no[j], font=('', 8, 'normal'), name=f'mate_{j}')
combo_box4.bind('<<ComboboxSelected>>', select_comb4)
combo_box4.place(x=5, y=65 + 20 * j)
回答1件
あなたの回答
tips
プレビュー