【问题标题】:tkinter start and stop buttonstkinter 开始和停止按钮
【发布时间】:2018-11-20 09:03:30
【问题描述】:

我做了两台 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,所以它可能很容易修复

【问题讨论】:

    标签: python-3.x tkinter


    【解决方案1】:

    您还没有定义 txt。
    在您调用的停止函数中:

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

    txt之前没有定义,我猜你忘记添加它作为函数参数了

    【讨论】:

    • 对不起,我的功能很烂,我应该在停止或启动功能中有txt参数吗?
    • 在任何直接使用它的函数中都应该有 txt 参数
    猜你喜欢
    • 2023-03-30
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2020-04-28
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多