【发布时间】:2020-08-03 04:38:52
【问题描述】:
所以我有这个用 tkinter 制作的 GUI,一切正常。它的作用是连接到服务器并为 Linux 或 Windows 发送命令。我继续使用 pyinstaller 创建一个没有控制台的窗口 GUI,当我尝试使用特定功能发送 Windows 命令时,它会失败。如果我使用在 GUI 之前弹出的控制台创建 GUI,它就像一个魅力。我想弄清楚的是如何让我的 GUI 与用户不可见的控制台一起工作。
我的代码中有问题的部分围绕子流程展开。为了让大家免于我编写的 400 多行代码,我提供了有问题的特定代码。这是sn-p:
def rcmd_in(server):
import subprocess as sp
for i in command_list:
result = sp.run(['C:/"Path to executable"/rcmd.exe', '\\\\' + server, i],
universal_newlines=True, stdout=sp.PIPE, stderr=sp.STDOUT)
print(result.stdout)
参数“server”是从另一个调用“rcmd_in”的函数传递的,“command_list”是在代码根目录中创建的可变列表,所有函数都可以访问。
现在,我已经完成了我的尽职调查。我进行了多次搜索,并对我的代码进行了编辑,试图在该控制台不可见的情况下运行我的代码,使用此链接中的信息找到:recipe-subprocess。这是编辑的样子:
def rcmd_in(server):
import subprocess as sp
import os, os.path
si = sp.STARTUPINFO()
si.dwFlags |= sp.STARTF_USESHOWWINDOW
for i in command_list:
result = sp.run(['C:/"Path to executable"/rcmd.exe', '\\\\' + server, i],
universal_newlines=True, stdin=sp.PIPE, stdout=sp.PIPE,
stderr=sp.STDOUT, startupinfo=si, env=os.environ)
print(result.stdout)
我现在遇到的问题是当它运行时弹出“错误:8 - 内部错误-109”的错误。让我补充一下,我尝试使用函数 'call()'、'Popen()' 和其他函数,但似乎只有 'run()' 有效。
我已经到了让我的大脑受伤的地步,我需要一些帮助。有什么建议?与往常一样,我永远对任何人的帮助都充满热情。提前致谢!
【问题讨论】:
标签: python-3.x tkinter subprocess pyinstaller