Ошибка ввода пользователем RevitPythonShell raw_input - PullRequest
0 голосов
/ 17 апреля 2020

Кто-нибудь знает, как исправить эту ошибку в RevitPythonShell 2018.1.0.0?

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

@ GTN, похоже, что код, выполняющий оболочку, пытается проанализировать строку как код. Вероятно, это связано с тем, как он пытается выяснить, что вы сделали. Я помню, что был очень смущен всем этим, когда я впервые создал 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??") 
0 голосов
/ 17 апреля 2020

Вы работаете python 2.x или 3.x?

Проверьте на терминале: python -V

Код ниже приведен для python 2.x (для python 3 используйте ввод вместо raw_input):

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