我如何使用子进程在python tkinter中传递文件名

下面是我的代码,这是一个类项目的微型IDE,我被困在这里,试图构建可编译Java的IDE。我下载了JDK,并且正在使用子进程来传递cmd并与javac通信,但是我需要传递带有扩展名的文件名,因此它只显示输出,并且我还需要输出控制台的帮助,因为它倾向于仅在Visual Studio终端中打开,请帮助我,因为我将在星期四提交。 femi.femiii@gmail.com

from tkinter import filedialog
from tkinter import messagebox
import subprocess
import os

name_file = os.path.basename(__file__)


    # run button that opens command line
    def run(self,*args):

        p1 = subprocess.Popen('cmd',shell=True,stdin=None,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        p2 = subprocess.Popen('javac name_file; java name_file',stdin=p1.stdout)
        p1.stdout.close()
        out,err = p2.communicate()


if __name__ == "__main__":
    master = tk.Tk()
    pt = PyText(master)
    master.mainloop()```

liuxiaoming110 回答:我如何使用子进程在python tkinter中传递文件名

我能想到的最简单的方法是使用sys argv将文件名传递给节点或Java例程

修改您的python脚本以将信息传递到argv中的命令行

fname = file 
#file you want to pass 
pythonCall = 'node javascript.js -- '+fname
#the -- passes what follows into the sys argvs
#this is python notation,java/node may not need the '--' but just a space
runCommand = 'cmd.exe /c ' + pythonCall
subprocess.Popen(runCommand)

然后在您的JavaScript的开头,这将为您提供传递到argv的文件名,该文件名来自我在下面提供的链接。

var args = process.argv.slice(2);

如果您需要更多帮助来访问Java中的process.argv:

How do I pass command line arguments to a Node.js program?

本文链接:https://www.f2er.com/3123472.html

大家都在问