-1
メインでプロセスを開始し、def関数で終了する方法を知りたい。私のコードでは、関心のあるアプリケーションを実行するプロセスがあり、Tkinterを使用して簡単なGUIを実行する別のプロセスがあり、ボタンを押すのを待っています。このボタンを押すと、プロセスが強制終了されます。例えば:AttributeError: 'NoneType' object has no attribute 'terminate'
Python - メインで開始されたプロセスを終了する
が、私はmain
でそれを終了しようとすると、それが動作します:
def pro_a():
#Runs the application
def pro_b():
root.mainloop() # Runs the GUI
def buttonCallBack()
#I want to terminate the processes here
#I've tried doing: p1.terminate()
b = Button(frame, .........., command = buttonCallBack)
b.place(......)
if __name__ == '__main__':
p1 = Process(target=pro_b)
p2 = Process(target=pro_a)
p1.start()
p2.start()
私はこれをしようとすると、それは私にエラーを与えます。しかし、それは私が望むものではありません。明らかにするには、メインでプロセスを開始し、ボタンが押されたらプロセスを終了する必要があります。
「AttributeError」の取得方法はわかりません。 'NameError'を取得する必要があります。なぜなら、' p1'は 'buttonCallBack'がそれを見ることができるどこにも定義されていないからです。あなたの例には何かがありませんか? –
私はそうは思わない。私は関連するすべてのコードを含んでいます。変わったことは、私がメインコードをbuttonCallBack関数に入れて同じコードを入れたら、終了しようとしているということです。私は関数内でそのプロセスを終了しなければならないようです。しかし、それは私が望むものではありません。 – BBEng
'p1'の値を再割り当てしますか? –