如何用一个 python 脚本打开一个 powershell 终端?
How to open a powershell terminal with one python script?
我正在开发一个基于文本的游戏,我 运行 通过双击我的顶级脚本 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()
函数作为参数传递以在第二个终端中显示其内容?任何帮助将不胜感激:)
您应该先将您的第二个程序转换为.exe,那个将显示用户命令。假设您将其保存为 usercommands.exe
,然后在您的主脚本中使用它打开那个;
import subprocess
subprocess.Popen([r"usercommands.exe"],
creationflags=subprocess.CREATE_NEW_CONSOLE)
当您 运行 您的主文件时,它会打开另一个控制台 window 运行 usercommands.exe
。
备注;
They must be in the same directory, your main file and .exe file
usercommands.exe
must show the commands in an infinite loop(while True
), so it's
going to display commands untill the user close it.
编辑;
现在,我们有一些法术,usercommands
之后必须使用这些法术变量,然后向我们展示一些组合。为此,我们必须将您的第一个文件导入 usercommands
script.It's going to like this;
usercommands.py
import mainfile #mainfile.py
if choose == mainfile.wizard:
print (something)
if choose == mainfile.subzero:
print (something)
算法应该是这样的,你将 usercommands.py
转换为 .exe 然后它会按你想要的方式工作我猜,我们现在不能在你尝试之前;)
一个 Python 脚本可以通过 subprocess
生成另一个 运行 与之并行的脚本。然后,生成的进程可以在一个简单的基于 tkinter
的 window 中显示通过管道传输给它的任何文本(通过正常的 print
语句或调用)——参见 errorwindow
模块 this answer 我的更多信息。
原始脚本如何开始可能并不重要。我个人在从命令 shell 以及其他基于 tkinter
的应用程序启动的应用程序中都使用过它——所以从 powershell 启动你的应用程序应该没问题。我相信该模块的原作者使用的是 Linux 或类似的东西。
我正在开发一个基于文本的游戏,我 运行 通过双击我的顶级脚本 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()
函数作为参数传递以在第二个终端中显示其内容?任何帮助将不胜感激:)
您应该先将您的第二个程序转换为.exe,那个将显示用户命令。假设您将其保存为 usercommands.exe
,然后在您的主脚本中使用它打开那个;
import subprocess
subprocess.Popen([r"usercommands.exe"],
creationflags=subprocess.CREATE_NEW_CONSOLE)
当您 运行 您的主文件时,它会打开另一个控制台 window 运行 usercommands.exe
。
备注;
They must be in the same directory, your main file and .exe file
usercommands.exe
must show the commands in an infinite loop(while True
), so it's going to display commands untill the user close it.
编辑;
现在,我们有一些法术,usercommands
之后必须使用这些法术变量,然后向我们展示一些组合。为此,我们必须将您的第一个文件导入 usercommands
script.It's going to like this;
usercommands.py
import mainfile #mainfile.py
if choose == mainfile.wizard:
print (something)
if choose == mainfile.subzero:
print (something)
算法应该是这样的,你将 usercommands.py
转换为 .exe 然后它会按你想要的方式工作我猜,我们现在不能在你尝试之前;)
一个 Python 脚本可以通过 subprocess
生成另一个 运行 与之并行的脚本。然后,生成的进程可以在一个简单的基于 tkinter
的 window 中显示通过管道传输给它的任何文本(通过正常的 print
语句或调用)——参见 errorwindow
模块 this answer 我的更多信息。
原始脚本如何开始可能并不重要。我个人在从命令 shell 以及其他基于 tkinter
的应用程序启动的应用程序中都使用过它——所以从 powershell 启动你的应用程序应该没问题。我相信该模块的原作者使用的是 Linux 或类似的东西。