【问题标题】:RevitPythonShell user input raw_input errorRevitPythonShell 用户输入 raw_input 错误
【发布时间】:2020-04-20 17:48:35
【问题描述】:

有人知道如何在 RevitPythonShell 2018.1.0.0 中修复此错误吗?

enter image description here

【问题讨论】:

  • 欢迎来到 Stack Overflow!请不要发布图片链接,而是在此处粘贴您遇到的代码和错误。

标签: python revit-api revit revitpythonshell pyrevit


【解决方案1】:

@GTN,看起来运行 shell 的代码正在尝试将行解析为代码。这可能是因为它试图弄清楚你的输入是什么。我记得当我第一次创建 RPS 时,我对这一切感到非常困惑。

请尝试这样做:

print("bunny rabbits lay eggs? yes/no")
answer = raw_input()

编辑:我检查了。它不起作用。

这是一个使用表单的解决方案:

import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
from System.Drawing import Point
from System.Windows.Forms import Form, TextBox, Button, Label, TableLayoutPanel, DockStyle, DialogResult, AnchorStyles


class InputBox(Form):
    def __init__(self, question):
        self.Text = question

        self.tlp = TableLayoutPanel()
        self.tlp.RowCount = 3
        self.tlp.ColumnCount = 1
        self.tlp.Dock = DockStyle.Fill

        self.label = Label()
        self.label.Text = question
        self.label.AutoSize = True
        self.label.Dock = DockStyle.Fill
        self.label.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom
        self.tlp.Controls.Add(self.label)

        self.answer = TextBox()
        self.answer.Dock = DockStyle.Fill
        self.answer.AutoSize = True
        self.answer.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom
        self.tlp.Controls.Add(self.answer)

        self.ok = Button()
        self.ok.Text = "OK"
        self.ok.AutoSize = True
        self.ok.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom
        self.ok.DialogResult = DialogResult.OK
        self.tlp.Controls.Add(self.ok)

        self.Controls.Add(self.tlp)

def raw_input(question):
    input_box = InputBox(question)
    result = input_box.ShowDialog()
    if result == DialogResult.OK:
        return input_box.answer.Text

print raw_input("bunny rabbits lay eggs??") 

【讨论】:

  • 谢谢达伦。我试过了,它也不起作用。在 RPS 中是否有任何其他解决方法可以提示并接受用户输入?
【解决方案2】:

您使用的是 python 2.x 还是 3.x?

在终端上查看:python -V

以下代码适用于 python 2.x(对于 python 3,使用 input 而不是 raw_input):

answer = ''
while not answer:
    answer = raw_input("bunny rabbits lay eggs (y,n)? ").rstrip().lower()

【讨论】:

  • 谢谢玛莎。我使用python 2.x。这就是 RPS 的优势所在。 raw_input 在任何其他环境中都可以正常工作。只是因为某些原因不在 RPS 上。这同样适用于您共享的代码。
  • @GTN 可能是因为这个字符 '>' ,请替换 'bunny rabbits lay eggs (y,n)?'用你的句子。
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2013-08-19
  • 1970-01-01
相关资源
最近更新 更多