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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

6815閲覧

python guiを実行中に停止や強制終了をしたい

adkinchan55

総合スコア11

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/21 14:01

前提・実現したいこと

pythonプログラムを実行後に任意のキーを押して中止したり強制終了したいです。

例えばPAUSEキーを押したら中止、
ESCキーを押したら強制終了というイメージです。

例えば以下のソースコードのファイルをpyランチャーで実行します。
5秒待ってメッセージボックスが表示されるだけの単純なものです。
この5秒の間に中止や強制終了をするためのキーを設定したいのです。

該当のソースコード

import time import tkinter from tkinter import messagebox time.sleep(5) messagebox.showinfo("title", "message")

試したこと

以下2点を試しましたが止まりませんでした。

1.実行後にCTRL + ALT + DELでパソコンロック

2.pyautoguiのフェールセーフ(マウスのポインタを0,0に移動して止める)

import pyautogui
pyautogui.FAILSAFE = True

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

贅沢をいうと、中止や終了の際にメッセージボックスを出したいです。
その方が実行が止まった感がありますので。

環境は以下です。
Windows10
Python3.7

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

tkinterでキーイベントを処理するのが自然だと思います。

Python

1import tkinter as tk 2from tkinter import messagebox 3 4def cancel(): 5 global tm 6 if tm: 7 app.after_cancel(tm) 8 tm = None 9 return True 10 11def on_esc(event): 12 cancel() 13 messagebox.showinfo("title", "終了") 14 app.destroy() 15 16def on_pause(event): 17 if cancel(): 18 messagebox.showinfo("title", "中止") 19 20def on_timer(): 21 global tm 22 tm = None 23 messagebox.showinfo("title", "message") 24 25app = tk.Tk() 26app.bind('<Escape>', on_esc) 27app.bind('<Pause>', on_pause) 28tm = app.after(5000, on_timer) 29app.mainloop()

投稿2020/02/21 14:52

can110

総合スコア38233

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

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

adkinchan55

2020/02/21 16:57

ありがとうございます。 もう一つ教えてください。 教えていただいたプログラムで実行後に別のWindow(Excelなど)に画面を変えた後でESCを押したところ効かなかったのですが、その場合でも効くようにすることはできますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問