如何用一个python脚本打开一个powershell终端?

时间:2015-01-12 10:12:04

标签: python powershell terminal

我正在制作一个基于文本的游戏,我通过双击我的顶级脚本TopLevel.py来运行。 我正在寻找一种在这个脚本中打开两个终端的方法。在一个终端中,主游戏将在损坏完成和使用法术的情况下运行。在另一个终端中,我想显示用户可以输入的命令列表,我希望后者保留在那里,直到比赛结束才关闭。我不会向你展示整个顶级脚本(它太长了),但这基本上就是我想要实现的目标:

    def displayCommands(hero):
        list_of_commands = []
        #this contains all my commands that the user can type in

    def main():
        hero = Hero() #make hero instance
        enemy = Enemy() #make and enemy instance
        a_game = TopLevel(hero,enemy) #create game engine
        a_game.play() #start game

        #implement code here to open another terminal 
        #and display user commands in there

有没有办法在这个脚本中打开另一个终端并将displayCommands()函数作为参数传递给第二个终端显示其内容?任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

您应该先将第二个程序转换为.exe,然后显示用户命令。假设您将其保存为usercommands.exe,之后在您的主脚本中使用它来打开它;

import subprocess
subprocess.Popen([r"usercommands.exe"],
                 creationflags=subprocess.CREATE_NEW_CONSOLE)

当您运行主文件时,它将打开另一个运行usercommands.exe的控制台窗口。

注释;

  

它们必须位于同一目录,主文件和.exe文件

中      

usercommands.exe必须以无限循环(while True)显示命令,因此它是   要显示命令,直到用户关闭它。

编辑;

现在,我们有一些法术,usercommands必须使用该法术变量,然后向我们展示一些组合。为此,我们必须将您的第一个文件导入usercommands脚本。它会像这样;

  

usercommands.py

import mainfile #mainfile.py

if choose == mainfile.wizard:
    print (something)
if choose == mainfile.subzero:
    print (something)

算法应该是这样的,您将usercommands.py转换为.exe然后它会按照您的意愿运行,我们现在无法在您尝试之前;)

答案 1 :(得分:0)

一个Python脚本可能会产生另一个Python脚本,它将通过subprocess与它并行运行。然后,生成的流程可以在基于print的简单窗口中显示通过管道传输的任何文本(通过正常的tkinter语句或调用) - 请参阅this answer中的errorwindow模块我的更多信息。

原始脚本的启动方式可能并不重要。我个人已经在从命令shell和其他基于tkinter的应用程序启动的应用程序中使用它 - 所以从powershell开始你应该没问题。我相信该模块的原作者使用的是Linux或类似的东西。