ive完成了两台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一次,所以可能很容易解决
答案 0 :(得分:0)
您尚未定义txt。
在停止函数中,您调用:
subprocess.Popen('taskkill /F /PID {0}'.format(start_SQL(txt)), shell=True)
txt 之前尚未定义,我想您忘了将其添加为功能参数