2015-01-12 105 views
0

我正在研究一个基于文本的游戏,通过双击我的顶级脚本即TopLevel.py来运行。 我正在寻找一种方法来在此脚本中打开两个终端。在一个终端中,主游戏将运行在造成伤害并且使用法术等情况下。在另一个终端中,我想显示用户可以键入的命令列表,并且我希望后者停留在那里并且在比赛结束前不能关闭。我不会告诉你整个顶层脚本(实在是太长了),但是这基本上是我想达到什么:如何用一个python脚本打开一个powershell终端?

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()作为参数在第二个终端显示其内容?任何帮助将不胜感激:)

+0

第一个终端如何打开,它为什么需要成为一个PowerShell控制台? – martineau

+0

我问,因为有一种方法可以让一个Python脚本通过'subprocess'并行产生另一个脚本,它将显示通过'tkinter'窗口传递给它的文本输出 - 参见[this answer]中的errorwindow模块(http: //stackoverflow.com/a/18091356/355230)。 – martineau

+0

我appologise我只想打开一个终端与脚本。 (编辑问题)。我通过在Windows PowerShell中键入'python TopLevel.py'运行第一个脚本。然后,我想在从TopLevel.py打开的第二个终端中显示“list_of_commands”的内容。没有具体的理由使用PowerShell,我刚刚习惯了阅读_Learn Python The Hard Way_。 – Loupi

回答

0

一个Python脚本可能通过subprocess产生另一个与其并行运行的脚本。生成的过程可以在简单的基于tkinter的窗口中显示通过管道输入的任何文本(通过正常的print声明或调用) - 请参阅我的this answer中的errorwindow模块以获取更多信息。

原始脚本如何开始并不重要。我个人曾将它用于从命令外壳以及其他基于tkinter的应用程序启动的应用程序 - 因此,从PowerShell启动应该没问题。我相信该模块的原作者正在使用Linux或类似的东西。

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 script.It会这样;

usercommands.py

import mainfile #mainfile.py 

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

的算法应该是这样的,您可以转换usercommands.py到.exe文件,然后它会工作,只要你想我想,我们现在不能尝试之前它;)

相关问题