tkinter启动和停止按钮

时间:2018-11-20 09:03:31

标签: python-3.x tkinter

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一次,所以可能很容易解决

1 个答案:

答案 0 :(得分:0)

您尚未定义txt。
在停止函数中,您调用:

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

txt 之前尚未定义,我想您忘了将其添加为功能参数