標準の「閉じる」ボタンでeasygui Pythonスクリプトを閉じます
-
22-08-2019 - |
質問
私はeasygui entryboxを提示し、の非常にのシンプルなアプリを、(作成)し、それがユーザーの入力を受信すると、この無限にループし続けるました。
これはNoneを返すように私は、[キャンセル]ボタンを使用してプログラムを終了することができますが、私はまた、プログラムを終了するには、標準の「閉じる」ボタンを使用できるようにしたいと思います。 (すなわち、Windowsのウィンドウの右上、Macのウィンドウの左上)このボタンは、現在何もしません。
私はこの行を見つけeasyguiモジュールを見てみます
root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )
これが犯人であるように見えるでしょう。私はTkinterのの専門家だが、私はおそらく私が望むように行動するこのハンドラを変更する方法を考え出すことができます。
私はeasyguiモジュールを用いて約混乱というではないだろうとしてしかし、私のメインのスクリプトからこの動作をオーバーライドし、閉じるボタンあからさまなプログラムを閉じるか、Noneを返すのいずれかを持っている方法はありますか?
解決
これは、はい、easyguiモジュールを変更することが必要となります。私はそれが修正されます!
**私はこれをexplaning EasyGUI作成者に電子メールで送られてきた[12:12 1月23/09]
**私は、この変更の可能性が起こっていることを言いたい - すべてであれば、私は疑っている - 非常に小さなです。あなたはEasyGUIは、GUIを作成するための簡単な、離散的な方法であることを意図している、参照してください。私はそれが新しいユーザーに混乱を招くことになるので、この加算は、インターフェースが非常にシーケンシャルで、特に以来、任意のを助けないだろうと思います。 [12:19、1月23/09]
** EasyGUI作成者は私の電子メールへの返信でこのように述べます:
easyguiダイアログが出ることはありません アプリケーション - それは戻って渡す必要があります 呼び出し元に値としましょう 呼び出し側は何をすべきかを決定ます。
しかし、これは面白いアイデアです。 むしろ、単純にクリックを無視するよりも 「クローズ」アイコン、easyguiボックスができました 上のクリックと同じ値を返します 「キャンセル」ボタンを返します。 私はこの上で瞑想します。
- スティーブFerg
私は、これは、少なくとも進歩だと思います。 [2:40 PM、1月23/09]
他のヒント
私は今、知りませんが、あなたはこのような何かを試してみました:?
root.protocol('WM_DELETE_WINDOW', self.quit)
または
root.protocol('WM_DELETE_WINDOW', self.destroy)
私は試していないが、"Tkinter protocol WM_DELETE_WINDOW"
などのGoogleの何か
私は解決策を見つけた彼は、いくつかの関数を定義したときに、その答えは、彼がそれを定義するところに行く(あなただけdenyWindowManagerCloseを見つけるために入力することができます)、選択ボックスの下にあります。ちょうどそれを消去し、その場所にこのコードを入れます。
def denyWindowManagerClose():
#------------------------------------------------------------------
# Changed by ProgrammingBR
# Enables the user to close the window without entering a value
# Youtube URL: https://www.youtube.com/channel/UCTZh6kWz_iYACNE6Jcy2lhw
#------------------------------------------------------------------
global __enterboxText
__enterboxText = None
boxRoot.quit()
あなたは、バックアップファイルを作成することができますが、これはすべてのボックスのために働くだろう、この別にここで与えられた提案は、私はそれらを試してみましたが、動作しません。あなたが見たい場合、私は(それはポルトガル語でですが、あなたはそれに従うことができます)、その上にビデオを持っているだけでユーチューブのチャンネルに移動し、私はすぐにそれをアップロードし、ここにリンクを掲載します。)