在我的脚本中,我想在句子(i(的正确或错误拼写(i(上要求用户输入,并在必要时允许用户进行更正。我只是在Mac上的Jupyter笔记本中运行此操作。(我们不知道哪个句子包含错误,哪些句子没有。(这很简单。但是,我想在提示下给用户提供句子 i 作为可编辑的输入。我试图通过在脚本中的"输入"行中添加变量来实现这一目标,但这不起作用。我找不到这个问题的积极答案。也许有人知道这是可能的还是不可能的?
这是脚本。
i = "Today, John toak the bus to school."
print(i)
print(f"Is this sentence spelled correctly? No = 0, Yes = 1")
choice = input("> ")
if choice == "1":
return i
else choice == "0":
spelling = input("> ", i) # this does not work. Is there a way?
return spelling
假设脚本为用户提供以下行:
John wend to school by bus today.
Is this sentence spelled correctly? No = 0, Yes = 1
如果用户选择0(= no(,我希望该句子已经在提示符处出现,以便用户可以编辑它(只需将'Wend'更改为" got''''''''''''''''''''(再次键入整个句子(有新错误的风险(:
|-----------------------------------------|
| > John wend to school by bus today. |
|-----------------------------------------|
有人知道这是否可能吗?
我们可以在tkinter窗口中执行此操作。这可能不是您要寻找的,而是使用标准库的解决方案。这是一些示例代码,它可以创建一个带有默认字符串的窗口。您可以编辑字符串。按下返回键时,读取窗口中的字符串。
from tkinter import Tk, LEFT, BOTH, StringVar
from tkinter.ttk import Entry, Frame
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Entry")
self.pack(fill=BOTH, expand=1)
self.contents = StringVar()
# give the StringVar a default value
self.contents.set('test')
self.entry = Entry(self)
self.entry.pack(side=LEFT, padx=15)
self.entry["textvariable"] = self.contents
self.entry.bind('<Key-Return>', self.on_changed)
def on_changed(self, event):
print('contents: {}'.format(self.contents.get()))
return True
def main():
root = Tk()
ex = Example(root)
root.geometry("250x100+300+300")
root.mainloop()
if __name__ == '__main__':
main()