前提・実現したいこと
tkinterにより作成したGUI上で「開始」ボタンを押して実行した無限ループから、
「停止」ボタンを押して処理を中断したい。
強制的に中断する方法としては、except KeyboardInterruptによってキー入力する等の方法が
あることは分かりましたが、そうではなく、GUI上のボタンを用いて中断させたいと思っています。
また、メインウインドウ自体を強制的に閉じる訳では無く、あくまで「開始」した処理を「停止」させたいです。
発生している問題・エラーメッセージ
destroy()を使用する方法で何か出来ないかと考えていますが、エラーが発生します。 AttributeError: 'function' object has no attribute 'destroy'
該当のソースコード
python
1# -*- coding: utf-8 -*- 2 3import tkinter as tk 4 5class MainWin(tk.Frame): 6 def __init__(self,master): 7 super().__init__(master) 8 self.grid() 9 self.master.geometry("100x50") 10 self.master.title("MainWindow") 11 self.create_widgets() 12 13 def create_widgets(self): 14 # 実行ボタンの作成 15 button_run = tk.Button(self, text="実行", command=self.start) 16 button_run.grid(row=0, column=0) 17 # 停止ボタンの作成 18 button_stop = tk.Button(self, text="停止", command=self.stop) 19 button_stop.grid(row=0, column=1) 20 21 def start(self): 22 while True: 23 print("a") 24 25 def stop(self): 26 self.start.destroy() 27 28def main(): 29 root = tk.Tk() 30 app = MainWin(master=root) 31 app.mainloop() 32 33if __name__ == "__main__": 34 main() 35
補足情報(FW/ツールのバージョンなど)
Python 3.8.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 06:00
2021/03/17 06:42
2021/03/18 06:45