python不需要等待用户输入的时间足够长的时间
我的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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要如下更新事件循环内部的屏幕,否则您的程序将在您看到的情况下悬挂。
you need to update the screen inside the event loop as follows, otherwise your programs will hang as you see happening.