首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python等待用户输入的时间不够长

Python等待用户输入的时间不够长
EN

Stack Overflow用户
提问于 2022-05-29 13:34:31
回答 1查看 47关注 0票数 0

我对python程序有问题。当我提示用户输入时,程序只等待2-3秒,如果我在这个时间框架内输入答案,它将加载其余的内容,但是如果我不这样做,它就会停止加载输入并变得不应答。我尝试过添加一个while循环,但是它不会改变任何东西。

代码语言:javascript
代码运行次数:0
运行
复制
import pygame as pg

pg.init()
pg.display.set_caption("Struktura Atoma")
(sirina, visina) = (250, 300)
prozor = pg.display.set_mode((sirina, visina))

kraj = True

r = 20  # poluprecnik
x = sirina // 2  # koordinata x centra kruznice
y = visina // 2  # koordinara y centra kruznice

izbor = input("Unesite 1 za atomsku strukturu atoma ugljenika, unesite 2 za atomsku strukturu magnezijuma: ")

if izbor == "1":

    for i in range(3):
        roze = (243, 58, 106)
        siva = (220, 220, 220)
        bojaAtom = (0, 255, 255)
        font = pg.font.SysFont("Arial", 22)  # podesavanje fonta
        slC = font.render("C", True, pg.Color("black"))  # formiranje slova
        pg.draw.circle(prozor, bojaAtom, (x, y), r, 1)  # crtanje kruznice
        if r == 20:
            pg.draw.circle(prozor, bojaAtom, (x, y), r, 0)
            prozor.blit(slC, (x - 6, y - 12))

        if r == 50:
            pg.draw.circle(prozor, roze, (x - 45, y - 20), r - 40, 0)
            pg.draw.circle(prozor, roze, (x + 45, y + 20), r - 40, 0)

        if r == 80:
            pg.draw.circle(prozor, siva, (x - 80, y), r - 70, 0)
            pg.draw.circle(prozor, siva, (x + 80, y), r - 70, 0)
            pg.draw.circle(prozor, siva, (x, y - 80), r - 70, 0)
            pg.draw.circle(prozor, siva, (x, y + 80), r - 70, 0)
        pg.display.update()  # osvezavanje prozora

        r = r + 30  # promena poluprecnika sledece kruznice
        pg.time.wait(100)  # cekaj 100ms

        # provera da li je korisnik zatvorio prozor

if izbor == "2":
    for i in range(4):
        roze = (243, 58, 106)
        siva = (220, 220, 220)
        bojaAtom = (0, 255, 255)
        font = pg.font.SysFont("Arial", 22)  # podesavanje fonta
        slMg = font.render("Mg", True, pg.Color("black"))  # formiranje slova
        pg.draw.circle(prozor, bojaAtom, (x, y), r, 1)  # crtanje kruznice
        if r == 20:
            pg.draw.circle(prozor, bojaAtom, (x, y), r, 0)
            prozor.blit(slMg, (x - 12, y - 13))

        if r == 50:
            pg.draw.circle(prozor, roze, (x - 45, y - 20), r - 40, 0)
            pg.draw.circle(prozor, roze, (x + 45, y + 20), r - 40, 0)

        if r == 80:
            pg.draw.circle(prozor, siva, (x - 80, y), r - 70, 0)
            pg.draw.circle(prozor, siva, (x + 80, y), r - 70, 0)
            pg.draw.circle(prozor, siva, (x, y - 80), r - 70, 0)
            pg.draw.circle(prozor, siva, (x, y + 80), r - 70, 0)
            pg.draw.circle(prozor, siva, (x - 56, y - 56), r - 70, 0)
            pg.draw.circle(prozor, siva, (x + 56, y - 56), r - 70, 0)
            pg.draw.circle(prozor, siva, (x + 56, y + 56), r - 70, 0)
            pg.draw.circle(prozor, siva, (x - 56, y + 56), r - 70, 0)

        if r == 110:
            pg.draw.circle(prozor, siva, (x - 105, y), r - 100, 0)
            pg.draw.circle(prozor, siva, (x + 105, y), r - 100, 0)
        pg.display.update()  # osvezavanje prozora

        r = r + 30  # promena poluprecnika sledece kruznice
        pg.time.wait(100)  # cekaj 100ms


while kraj:
    for dogadjaj in pg.event.get():
        if dogadjaj.type == pg.QUIT:
            kraj = False



pg.quit()
EN

回答 1

Stack Overflow用户

发布于 2022-05-29 14:25:49

您需要按如下方式更新事件循环中的屏幕,否则程序将在您看到发生的情况下挂起。

代码语言:javascript
代码运行次数:0
运行
复制
while kraj:
    for dogadjaj in pg.event.get():
        if dogadjaj.type == pg.QUIT:
            kraj = False
        pg.display.update()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72424108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档