首页 > 解决方案 > 为什么我的程序在运行时没有响应

问题描述

我最近开始使用 python,并意识到这可能是一个愚蠢的问题,但我试图使用窗口制作基于选择的游戏。我曾经graphics.py显示我的文字。当我运行代码时,窗口打开但处于“无响应状态”,我无法找出问题所在。也没有错误代码

我基本上从左果皮的视频中复制了所有内容。但是,视频是否非常过时,所以某处可能存在错误,但没有更多的网站或视频可以解释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() 

标签: pythonwindowszelle-graphics

解决方案


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

人们使其具有任何状态的两种方法是不断运行无限循环处理输入或使用鼠标单击来推进状态。由于您收到“无响应”消息,我假设您在某种开发 IDE 下运行,例如 Anaconda,它不喜欢您的失控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”,程序将退出。您的用户需要知道在任何输入字段中输入任何内容后单击。


推荐阅读