我有一个用32位python 2.7构建的tkinter UI,我做了一个按钮,我最终希望在不中断UI的情况下打开外部应用程序(64位exe文件)。我的按钮启动了一个线程,该线程又启动了一个带有新控制台窗口的子进程,并调用了我的exe文件的完整路径。如果我在python脚本之外的cmd窗口中键入此完整路径,则我的应用程序成功打开。
我收到错误:WindowsError:[错误193]%1不是有效的Win32应用程序
我知道这需要运行64位版本的python或32位版本的应用程序。但是,有没有一种替代解决方案可以用代码解决,而不用更改我的python或应用程序版本?为简单起见,我在下面提供了一些示例代码。
感谢您的帮助!
self.VMD_button = tk.Button(self, text="Launch VMD", command=self.show_VMD)
def show_VMD(self):
VMD_cmd = '"%s"' % "C:\VMD.exe"
thread= Thread(target=self.call_subprocess, args=[VMD_cmd])
thread.daemon = True
thread.start()
def call_subprocess(self, cmd):
proc = subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE).wait()
据我所知,答案是“否”。而且,发生的事情就是您刚刚得到的。您的应用程序是32位的,因此只知道32位应用程序。它可能无法启动64位进程。相反的情况would起作用,因为存在backward(但不是前向)兼容性。