私の問題がどこにあるのか正確にはわかりません。それはバインディングにあるか、それ自体が呼び出されている関数にあります。
ボタンはすべて labelFrame の下に表示され、それぞれに入力ボックスが付いているため、ユーザーは多くの csv ファイルを読み込んで分析でき、ファイルパスが表示されます。これらのファイルは、接続されていない別のプロジェクト フォルダーに存在する可能性があるため、ユーザーが検索する必要があります。
これはボタンの例です。
csv_type21 = Button(csvfiles, text = "Browse ...")
csv_type21.bind("<Button-1>", lambda event, obj = var21, tid = 21: find_cvsfile(event, obj, tid))
ユーザーがファイルの検索をキャンセルすると、それらは沈んだままになり、ファイルを選択しても沈んだままになります。(ただし、入力ボックスはファイルパスで更新されます)。
これは彼らが呼び出す関数で、csv ファイルを要求してタプルとして保存するので、どの csv がどれであるかを追跡できます。その後、ファイルパスを示すために、ボタンが並んでいる Entry ボックスの StringVar を設定します。
def find_csvfile(event, obj, tid):
input_csvfile = askopenfile(initialdir = 'C:/',
filetypes = [("CSV File", "*.csv")],
title = 'Open CSV File for id ' + str(tid) + '...',
mode = 'r')
csv_data = tid, input_csvfile
filepath = input_csvfile.name
obj.set(filepath)
さまざまな変数と引数をいじってみましたが、何も機能しません。同じコマンドを呼び出す複数のボタンでなければならないと思いますが、よくわかりません。
どんな助けでも大歓迎です。
ありがとう。