为什么我的程序在 运行 时没有响应

Why does my program not respond when I run it

我最近开始 python,并意识到这可能是一个愚蠢的问题,但我试图使用 window 制作基于选择的游戏。我使用 graphics.py 来显示我的文字。当我 运行 代码时,window 打开但在 "not responding state" 中,我无法找出问题所在。 也没有错误代码

我基本上是从 left peel 的视频中复制了所有内容。但是,视频是否已经过时,所以可能某处有错误,但是没有更多的网站或视频可以解释 graphics.py

代码如下:

from graphics import *


def main():
    win = GraphWin("win", 1300, 700)
    #win.setBackground(color_rgb(255, 0, 0))

    txt = Text(Point(650, 120), 'This was text')
    txt1 = Text(Point(650, 135), "This was text")
    txt2 = Text(Point(650, 150), "This was text")
    txt3 = Text(Point(650, 165), "This was text")
    txt4 = Text(Point(650, 180), "This was text "
                                 "This was text.")

    img = Image(Point(650, 450), "a picture (.gif)")
    nxt = Text(Point(1090, 590), "Type next for next")
    txt.draw(win)
    txt1.draw(win)
    txt2.draw(win)
    txt3.draw(win)
    txt4.draw(win)

    img.draw(win)
    inputb = Entry(Point(1200, 590), 10)
    inputb.draw(win)
    nxt.draw(win)

    s = inputb.getText()

    command = inputb.getText()
    while True:
        s = inputb.getText()
        if s == 'next':
            the program stopped working from here, so i just put a print("")

main() 

尽管位于 tkinter 之上,但 Zelle Graphics 没有用户访问事件管理器的权限! (不像 Python turtle 也位于 tkinter 之上。)而且 Entry 对象确实暴露了这个缺点。

人们使它具有任何 状态 的两种方法是 运行 无限循环不断处理输入或使用鼠标点击来推进状态。由于您收到 "not responding" 消息,我假设您正在 运行 进行某种开发 IDE,例如 Anaconda,它不喜欢您的 运行away while True: 循环。所以我们需要切换到鼠标点击。这是一个简单的例子:

from graphics import *

win = GraphWin()

entry = Entry(Point(100, 100), 10)
entry.draw(win)

text = Text(Point(100, 150), 'This is text')
text.draw(win)

while True:
    win.getMouse()

    string = entry.getText()

    if string.lower() == 'quit':
        break

    text.setText(string.upper())

您可以输入 Entry 小部件,然后当您单击鼠标时,您的输入将显示在 Text 小部件中,但全部为大写。如果输入 "quit",程序将退出。您的用户需要知道在输入任何输入字段后点击。