我正在制作一个基于文本的游戏,我通过双击我的顶级脚本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()
函数作为参数传递给第二个终端显示其内容?任何帮助将不胜感激:)
答案 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或类似的东西。