マイコード:ボタンをクリックしたときにのみ変数の値を返す方法はありますか?
def file_exists(f_name):
select = 0
def skip():
nonlocal select
select = 1
err_msg.destroy()
def overwrite():
nonlocal select
select = 2
err_msg.destroy()
def rename():
global select
select = 3
err_msg.destroy()
# Determine whether already existing zip member's name is a file or a folder
if f_name[-1] == "/":
target = "folder"
else:
target = "file"
# Display a warning message if a file or folder already exists
''' Create a custom message box with three buttons: skip, overwrite and rename. Depending
on the users change the value of the variable 'select' and close the child window'''
if select != 0:
return select
私はローカル以外を使用して知っているが悪であるが、私は、少なくとも、このプログラムのために、私の手続きのアプローチとの行かなければなりません。
問題は、私がこのボタンを押しても、押したボタンにかかわらず、すぐにselect
(初期値は0)を返すということです。ボタンを押すと、それに応じてselect
の値が変更されます。
ボタンを押した後にはどうすればいいですか?ご覧のとおり、私の最初の試みは、選択が!= 0
である場合にのみ値を返すことでしたが、これは機能しません。
お寄せいただきありがとうございます!
私は正しくこれを理解しましたが、ユーザーがボタンを押してから、更新された 'select'値を返すまで、' file_exists'関数をブロックしたいとしますか? –
ユーザーが3つのボタンのいずれかを押すまで値を返すのをブロックしたいと思います。投稿を編集しましたか?もしそうなら、ありがとう! – Grendel
'file_exists'関数を早く呼び出す特別な理由はありますか?関数が何かが起こるのを待つ必要があるなら、それは基本的にあなたが早すぎるということを意味するのではないでしょうか?ボタンがクリックされるのを待つ代わりに、関数をボタンに接続して、ボタンが押されたときに関数が実行されるようにする必要があります。適切なタイミングで関数を呼び出すよりも、関数を早期に呼び出して何かが起こるのを待つよりもずっと簡単です。基本的に 'Button(callback = do_stuff_with_select)'と似ています。 –