2

私の問題がどこにあるのか正確にはわかりません。それはバインディングにあるか、それ自体が呼び出されている関数にあります。

ボタンはすべて 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)

さまざまな変数と引数をいじってみましたが、何も機能しません。同じコマンドを呼び出す複数のボタンでなければならないと思いますが、よくわかりません。

どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

8

return "break"の最後に追加def find_csvfile(event, obj, tid):

于 2017-07-18T23:19:39.977 に答える
2

バインディングを削除することで問題を解決しました。lambdaコマンドはButton宣言に移動され、「event」パラメーターはfind_csvfile関数から削除されました。このソリューションは、押されたときにボタンが沈むのを防ぎます。

csv_type21 = Button(csvfiles, text = "Browse ...", command = lambda obj = var21, tid = 21: find_csvfile(obj, tid))
于 2013-01-10T09:26:21.197 に答える
-3

button.bind("",funcion) を使用してプローブする

def funcion()
   print

function() の実行中にマウス ボタンを押して離したときに "" を呼び出します。

状態が押されたときに戻る

于 2015-01-06T17:34:33.840 に答える