質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

6734閲覧

sys.exit()でプログラムが終了しない

kiiti_shiraishi

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/11/18 05:33

前提・実現したいこと

sys.exit()処理をしてもexitしない。
textboxの入力が1以下または65以上、またはかな漢字を入力した場合プログラムを強制終了させたいと思いsys.exit()文を入れましたが
終了しませ。textboxに0、65以上の数字、かな漢字を入力しても内容をプリントし、何度も入力出来ます。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python3.9

1import sys 2 3def bdest(): 4 global entry 5 bdNum = entry.get() 6 try: 7 bdNum = int(bdNum) 8 except ValueError as e: 9 print('かな漢字入力エラー', e) 10 sys.exit() 11 if bdNum < 1: 12 sys.exit() 13 if bdNum > 64: 14 exit() 15 sys.exit() 16 print(bdNum)

試したこと

sys.exit()でもexit()でも同じでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/11/18 05:51

entryはどう定義されていますか?
melian

2021/11/18 06:09

こちらの環境は Python 3.9 + tkinter 8.6.11 ですが、sys.exit() でプログラムが終了します。同じ結果になるかもしれませんが、sys.exit() の直前に root.destroy() を入れるどうなるでしょうか?
kiiti_shiraishi

2021/11/18 23:03

melianさん root.destroy()を入れたらexitしました。プログラムで開いたボタンTextboxを配置したウィンドウが閉じたのでOKとおもいます。pip listで見るとtkinterが見当たりませんでした。importでエラーがでていないので問題ないと思います。有難うございました。理解出来ないかもしれませんがroot.destroy()を入れた理由を教えて頂けると有難いです。 itagagakiさん bdNum = entry.get()はtextboxの内容を読み取ることが出来なくて教えて頂いた内容をそのまま使用しています。entryの定義については私の参考書では全く触れられていないので今だ持って判りません。 回答が0になっていたので今まで気が付きませんでした。申し訳ありませんでした。ベストアンサーボタンが表示されていないので現状のまま投稿します。
melian

2021/11/19 00:53

sys.exit() が効かないということで、 tkinter のアプリケーションループが動いたままになっているのかな、と思った次第です(ちょっと考えづらい状況ですが)。root.destory() を実行すると、tkinter のアプリケーションループ(実際にはバックエンドで動いている tcl インタープリタ)が停止して root ウィジェットを含む、全てのウィジェットを破壊(内部で確保されているメモリ領域を解放)します。
kiiti_shiraishi

2021/11/19 11:43

ありがとうございます。試しにroot.destroy()のみでsys.exit()を削除しましたが、これでも停止できました。ちなみに停止する時 PS C:\Users\shiraishikiichi\pytextとプログラムがあるディレクトリを表示します。
guest

回答1

0

自己解決

melianさんの解答で解決しました。ベストアンサーのチェックボタンが表示されないのでこの欄でお知らせします。

投稿2021/11/18 23:11

kiiti_shiraishi

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問