2
我有一個名爲test.exe
的程序。該程序是用python/pyqt4編寫的。在代碼的某一點,我想觸發應用程序的重新啓動,因此我需要創建一個獨立於主進程獨立運行的進程,以便啓動程序並立即關閉當前運行的進程。如何從.exe文件調用進程
問題是,無論我如何嘗試,它都不想工作。而不是執行相同的exe文件,我也嘗試創建一個.bat文件,然後在超時後調用exe文件(我向本地主機添加了一個ping)。
如果我嘗試執行一些像notepad.exe副本一樣的其他程序,它沒有問題,但我無法找到解決方案,以重新啓動應用程序。這裏是我的測試代碼:
import os
import sys
import subprocess
from PyQt4 import QtGui, QtCore
if getattr(sys, 'frozen', False):
ROOT_PATH = os.path.dirname(os.path.abspath(sys.executable))
elif __file__:
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
qbtn = QtGui.QPushButton('Quit', self)
qbtn.clicked.connect(self.btn_clicked)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show()
def btn_clicked(self):
p = QtCore.QProcess()
p.setWorkingDirectory(ROOT_PATH)
p.startDetached("start.bat")
sys.exit(0)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
的exe
使用pyinstaller編譯和我的最終位置我有text.exe
和start.bat
看起來像這樣:
ping 127.0.0.1 > "bat.txt"
start "" "%~dp0test.exe"
如果我在我的bat文件與notepad.exe
替換test.exe
有用。 任何想法?
不應該是'%〜DP0 \ test.exe的「'(失蹤斜線)?如果我點擊它 – npocmaka
蝙蝠工作正常。 –