【问题标题】:Python Freezing: general process and user input?Python冻结:一般过程和用户​​输入?
【发布时间】:2016-09-03 19:15:19
【问题描述】:

我对冻结和打包代码的过程比较陌生,我对冻结项目的担忧之一是如何处理用户输入。我在一个项目中有一个主文件,该文件处理具有如下输入区域的物理内容:

#Coil(center, radius, normal vector, current, scene, loops(default=1), pitch(default=1))

#Example coil:
r = Coil(vector(0, 0, 0), 10, vector(0, 1, 1), 10, d, 10, 0.5)

所以在我用 py2exe 或我找到的任何类似的东西打包文件之后,有没有办法让用户输入像上面那样,或者我需要在打包代码之前为此创建一个用户界面?谢谢!

【问题讨论】:

  • 我没有看到代码示例实际上有任何用户输入。
  • 我的意思是他们可以在主 .py 程序本身中将代码编辑为他们需要的任何变量。用户没有在正在运行的程序中明确输入任何内容,抱歉我不清楚。这更有意义吗?
  • 据我了解,使用 py2exe 后,您将得到一个无法再编辑的可执行文件(我认为它将是二进制文件)。因此,如果您希望用户提供输入,您可能需要实现命令行参数

标签: python python-2.7 vpython


【解决方案1】:

一旦您的代码被冻结,就无法再更改代码的内容(无需返回原始代码),但您可以使用多种策略:

  • 提示用户一次缺少参数 - 使程序难以使用
  • 允许用户在命令行上提供参数,例如:使用argparse - 允许批量调用您的代码 - 可以与上述结合
  • 允许用户提供一个包含参数的文件,这可以是每行一个,一行逗号分隔的参数,并且每行调用一次函数或许多其他选项,如 xml、ini 格式等 - 更好的批处理调用 - 这可以与上述两种方法结合使用,您可以使用--file 选项
  • 以上所有可能是最好的选择
  • 使用 Tinker、QT 或 wxPython 为参数提供 GUI 输入通常大部分工作仍然可以与上述方法结合
  • 可以实现类似于插件的架构来提供默认代码,但也允许用户提供替代代码,但存在安全问题。
  • 您可以将上述代码保留在冻结的应用程序之外,但将其作为 .py 文件包含在用户可以修改的位置注意 用户将拥有提供 python 的全部功能,包括您的应用程序包含的任何可能导致恶意更改的库
  • 您可以编写自己的小语言,以允许用户提供所需的项目,例如使用通过使用TextXhere 列出的任何工具,然后允许用户提供输入文件。

从字里行间看,看起来用户指定了许多对象实例,然后创建和处理这些对象实例,因此您可以使用一种伪语言来解析,从命令行参数或文件,将是要走的路。然后解析(并验证)输入,并为每个对象创建一个实例并将其添加到列表中。然后一旦输入被使用处理列表中的所有实例。

【讨论】:

  • 感谢您如此详细的回答!我将探索使用命令行来处理输入,我认为这是该程序的最佳选择。
  • @JerryMeng 看看docs.python.org/3/library/argparse.html 它需要大量的命令行解析工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 2016-02-05
  • 1970-01-01
  • 2022-07-07
  • 2015-09-04
  • 1970-01-01
相关资源
最近更新 更多