python不需要等待用户输入的时间足够长的时间

发布于 2025-02-02 16:30:55 字数 3298 浏览 4 评论 0原文

我的Python程序有问题。当我提示用户输入程序时,该程序仅等待大约2-3秒,如果我在该时间范围内输入答案会加载其余的,但是如果我不加载,则它会停止加载输入并变得无需重新调音。 我尝试添加一段时间循环,但没有更改任何内容。

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()

I have a problem with a python program. When I prompt for user input the program waits only about 2-3 seconds, and if I input the answer in that timeframe it loads the rest, but if i don't it stops loading inputs and becomes unreponsive.
I have tried adding a while loop but it doesnt change anything.

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()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘虞初梦 2025-02-09 16:30:55

您需要如下更新事件循环内部的屏幕,否则您的程序将在您看到的情况下悬挂。

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

you need to update the screen inside the event loop as follows, otherwise your programs will hang as you see happening.

while kraj:
    for dogadjaj in pg.event.get():
        if dogadjaj.type == pg.QUIT:
            kraj = False
        pg.display.update()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文