我想在Python的Qt小部件中嵌入Windows命令行解释器。
我使用从控制台的窗口ID创建窗口容器的功能,这一部分运行良好。
我的问题是启动控制台的方式:我试图通过使用运行时构建脚本(runme.cmd)或使用直接命令行来启动控制台,我试图通过使用os.system或子进程来启动此控制台。 .Popen,但是当我成功将控制台嵌入到我的小部件中时,它不会响应键盘输入。尽管如此,复制和粘贴仍可以很好地在此控制台中运行,并且我能够粘贴命令并运行它们。
这是我使用的代码:
with open("runme.cmd", "w") as f:
f.write("start /wait c:\\Windows\\system32\\cmd.exe /k")
exePath = "runme.cmd"
# exePath = "C:\\Windows\\system32\\cmd.exe /k"
# os.system("start /wait cmd")
subprocess.Popen(exePath, stdin=PIPE, stdout=PIPE, stderr=PIPE)
# os.system(exePath)
# subprocess.run(exePath, stdin=PIPE)
time.sleep(0.5)
hwnd = win32gui.FindWindow("ConsoleWindowClass", None)
print("hWnd = %d" % hwnd)
widget = self.createWindowContainer(QWindow.fromWinId(hwnd), self)
vLayout = QVBoxLayout(self)
vLayout.addWidget(widget)
欢迎任何帮助。