从Python图形中的输入窗口获取文本

时间:2016-01-05 00:42:47

标签: string python-3.x text zelle-graphics

from graphics import *      

win = GraphWin("Hangman", 600, 600)
win.setBackground("yellow")
textEntry = Entry(Point(233,200),10)
textEntry.draw(win)
text = textEntry.getText()
testText = Text(Point(150,15), text)
testText.draw(win)

exitText = Text(Point(200,50), 'Click anywhere to quit')
exitText.draw(win)

win.getMouse()
win.close()

我试图在Python图形中从用户那里获取文本并能够使用该输入,例如操作它,在列表中搜索它等。为了测试它,我创建了一个输入窗口图形,并尝试从该输入窗口获取文本,只需在窗口中显示它,只是为了检查它是否成功获取文本。

不幸的是,它不起作用,只是显示了“点击任意位置退出”#39;然后是空窗口,尽管在其中写入文本但它什么也没做。我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

以下内容来自documentation

  

底层事件隐藏在graphics.py中的方式,当用户在Entry框中输入文本时没有信号。为了向程序发出信号,上面使用了鼠标按键。在这种情况下,鼠标按下的位置不相关,但是一旦处理完鼠标,就可以继续执行并阅读条目文本。

您在绘制条目后立即获取文本,因此它将为空。您需要等待信号,然后阅读条目。文档中的摘录说等待鼠标点击然后阅读条目。 所以尝试添加

    win.getMouse()

到您的代码如下

    from graphics import *      

    win = GraphWin("Hangman", 600, 600)
    win.setBackground("yellow")
    textEntry = Entry(Point(233,200),50)
    textEntry.draw(win)

    # click the mouse to signal done entering text
    win.getMouse()

    text = textEntry.getText()
    testText = Text(Point(150,15), text)
    testText.draw(win)

    exitText = Text(Point(200,50), 'Click anywhere to quit')
    exitText.draw(win)

    win.getMouse()
    win.close()

这是输出的样子。注意:我将Entry 50扩大了。 output of testing the modified code