кнопки запуска и остановки tkinter - PullRequest
0 голосов
/ 20 ноября 2018

я сделал два сервера opc-ua, один из которых читает значение тега из текстового файла, а другой - значение SQL.Теперь я создал «серверное меню» в tkinter, которое может запускать серверы среди прочего.Проблема в том, что я не могу выключить один из них и оставить другой запущенным, я хочу что-то вроде этого:

import subprocess

def start_txt():
    txt = subprocess.Popen("python TAG_TXT.py &", shell=True)
    return txt

def stop_txt():
     subprocess.Popen('taskkill /F /PID {0}'.format(start_txt(txt)),
                                                         shell=True)

def start_SQL():
    SQL = subprocess.Popen("python TAG_SQL.py &", shell=True)
    return SQL

def stop_SQL():
    subprocess.Popen('taskkill /F /PID {0}'.format(start_SQL(txt)), 
                                                        shell=True)

если я использую это:

os.system("taskkill /f /im python.exe")

я убиваю обоихсерверы

сообщение об ошибке:

Exception in Tkinter callback
 Traceback (most recent call last):
   File "C:\Users\admin\AppData\Local\Programs\Python\Python37- 
32\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:\PY_OPCUA\servermeny_GUI.py", line 237, in kill_txt
    subprocess.Popen('taskkill /F /PID {0}'.format(textfile_server(txt)), 
                                                              shell=True)
NameError: name 'txt' is not defined

я использовал tkinter только один раз, так что это, вероятно, очень легко исправить

1 Ответ

0 голосов
/ 20 ноября 2018

Вы не определили txt.
В функциях остановки вы вызываете:

subprocess.Popen('taskkill /F /PID {0}'.format(start_SQL(txt)), shell=True)

txt не было определено ранее, я думаю, вы забылидобавить его в качестве параметра функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...