对于想了解无法在Atom中使用PyGame打开图像的读者,本文将提供新的信息,我们将详细介绍atom运行python,并且为您提供关于PyGame中的窗口无法在前台工作、pygame中调用pygame
对于想了解无法在Atom中使用PyGame打开图像的读者,本文将提供新的信息,我们将详细介绍atom运行python,并且为您提供关于PyGame 中的窗口无法在前台工作、pygame 中调用 pygame.display.set_mode () 方法参数...、pygame 在触摸底部时无法阻止图像移出屏幕、pygame 层,pygame.sprite的有价值信息。
本文目录一览:- 无法在Atom中使用PyGame打开图像(atom运行python)
- PyGame 中的窗口无法在前台工作
- pygame 中调用 pygame.display.set_mode () 方法参数...
- pygame 在触摸底部时无法阻止图像移出屏幕
- pygame 层,pygame.sprite
无法在Atom中使用PyGame打开图像(atom运行python)
7个月前关闭。
我正在使用该网站学习python
我正在尝试像这样加载图像:
background_image = pygame.image.load("background.jpg").convert()
我发现其他几个帖子都问相同的问题,所有答案都告诉发布者确保图像与文件位于同一文件夹中.py
。好吧,是的。我仔细检查了。
我还尝试将其放入一个子文件夹中''images''
并使用它。
background_image = pygame.image.load(os.path.join("images","background.jpg")).convert()
在两种情况下,我都会收到以下错误消息。
pygame.error: Couldn''t open saturn_family1.jpg
要么
pygame.error: Couldn''t open images\saturn_family1.jpg
使用绝对路径时,它可以工作。但是我不应该使用这样的相对路径吗?
同样,使用script
软件包在Atom中执行时也会发生这种情况。但是当执行实际的python文件时,它可以工作。
我很沮丧,这似乎没有任何意义!这是怎么回事?
完整的错误消息是:
C:\Users\Manu\Dropbox\Python\ProgramArcadeGamesTraceback (most recent call last): File "C:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11\11_graphicsAndSound.py", line 26, in <module> background_image = pygame.image.load(os.path.join("images","saturn_family1.jpg")).convert()pygame.error: Couldn''t open images\saturn_family1.jpg[Finished in 0.815s]
这是.py
目录:
更新:
我在sublime中运行了完全相同的代码,并且运行良好。我假设这是Atom的问题,所以从现在开始我将只使用Sublime。感谢所有尝试提供帮助的人!
答案1
小编典典只要是当前工作目录,就可以将文件与python程序放在同一目录中。由于我们知道情况并非如此,因此要么在执行脚本时以某种方式更改工作目录,要么在其他目录中启动。您可以在命令行上使用
python ../myscript.py
但我不认为您正在这样做。您说了一些有关在Atom下运行脚本的信息,这也许可以解释它。我对此没有任何经验,所以我不能随便说。请把
print os.getcwd()
作为程序的第一行。然后,您将知道从哪里开始以及当前目录是否正在更改。如果没有更改,请尝试在Atom下并从命令行运行脚本,以查看是否获得不同的结果。除非我们确切地知道发生了什么,否则我们将无法解决问题。
PyGame 中的窗口无法在前台工作
如何解决PyGame 中的窗口无法在前台工作?
我想用 Python 编写 Cardano Lattice 密码并在 Pygame 中呈现它。我得到以下代码:
import pygame as pg
import time
import sys
from math import ceil
from math import sqrt
from random import randint
import string
import random
pg.init()
pg.display.set_caption(''Решето Кардано'')
phrase_input = input().replace('' '','''')
dlinna_phrasi = len(phrase_input)
dlinna_tablici = ceil(sqrt(dlinna_phrasi))
if dlinna_tablici % 2 != 0:
dlinna_tablici += 1
clock = pg.time.Clock()
pivot = [1920 // 2,1080 // 2]
offset = pg.math.Vector2()
angle = 0
Moi_Font = pg.font.Font(None,40)
screen = pg.display.set_mode((1920,1080))
screen.fill(''black'')
table = [[0] * dlinna_tablici for _ in range(dlinna_tablici)]
letter_table = [[''0''] * dlinna_tablici for q in range(dlinna_tablici)]
yellow_image_orig = pg.Surface((dlinna_tablici*50,dlinna_tablici*50))
yellow_image_orig.set_colorkey(''black'')
yellow_image_orig.fill(''yellow'')
yellow_image_orig.set_colorkey(''black'')
yellow_rect = yellow_image_orig.get_rect()
yellow_rect.center = (1920 // 2,1080// 2)
yellow_rect_center = yellow_rect.center
left_up_ugolY = yellow_rect_center[1] - (dlinna_tablici*50) // 2
left_up_ugolX = yellow_rect_center[0] - (dlinna_tablici*50) // 2
for n in range(dlinna_tablici):
for m in range(dlinna_tablici):
if n * dlinna_tablici + m < len(phrase_input):
letter_table[m][n] = phrase_input[n * dlinna_tablici + m]
else:
letter_table[m][n] = random.choice(string.ascii_letters)
Moi_text = Moi_Font.render(letter_table[m][n],''white'')
time.sleep(0.1)
screen.blit(Moi_text,(m*50 + left_up_ugolX + 10,n*50 + left_up_ugolY + 10))
pg.display.flip()
print(letter_table[m][n],end = '' '')
print()
time.sleep(2)
screen.blit(yellow_image_orig,yellow_rect)
pg.display.update()
def rotate(surface,angle,pivot,offset):
rotated_image = pg.transform.rotate(surface,-angle)
rotated_offset = offset.rotate(angle)
rect = rotated_image.get_rect(center=pivot+rotated_offset)
return rotated_image,rect
time.sleep(2)
COL = int((dlinna_tablici*dlinna_tablici)/4)
proverka_1 = 0
while proverka_1 < COL:
i = randint(0,dlinna_tablici - 1)
j = randint(0,dlinna_tablici - 1)
if table[i][j] == 0:
table[i][j] = 1
table[j][dlinna_tablici - 1 - i] = 2
table[dlinna_tablici - 1 - i][dlinna_tablici - 1 - j] = 3
table[dlinna_tablici - 1 - j][dlinna_tablici - 1 -(dlinna_tablici - 1 - i)] = 4
time.sleep(0.5)
pg.draw.rect(yellow_image_orig,''black'',(i*50 + 5,j*50 + 5,40,40))
pg.draw.rect(screen,(i * 50 + 5 + left_up_ugolX,j * 50 + 5 + left_up_ugolY,40))
pg.display.update()
for n in range(dlinna_tablici):
for m in range(dlinna_tablici):
if table[n][m] == 1:
Moi_text = Moi_Font.render(letter_table[n][m],''white'')
screen.blit(Moi_text,(n * 50 + left_up_ugolX + 10,m * 50 + left_up_ugolY + 10))
pg.display.update()
proverka_1 += 1
pg.display.update()
time.sleep(2)
while angle < 90:
angle += 1
rotated_image,rect = rotate(yellow_image_orig,offset)
screen.fill(''black'')
screen.blit(rotated_image,rect)
pg.display.flip()
clock.tick(30)
time.sleep(1)
for n in range(dlinna_tablici):
for m in range(dlinna_tablici):
if table[n][m] == 4:
time.sleep(0.5)
Moi_text = Moi_Font.render(letter_table[n][m],''white'')
screen.blit(Moi_text,m * 50 + left_up_ugolY + 10))
pg.display.update()
time.sleep(3)
while angle < 180:
angle += 1
rotated_image,rect)
pg.display.update()
clock.tick(30)
time.sleep(1)
for n in range(dlinna_tablici):
for m in range(dlinna_tablici):
if table[n][m] == 3:
time.sleep(0.5)
Moi_text = Moi_Font.render(letter_table[n][m],m * 50 + left_up_ugolY + 10))
pg.display.update()
time.sleep(3)
while angle < 270:
angle += 1
rotated_image,rect)
pg.display.flip()
clock.tick(30)
time.sleep(1)
for n in range(dlinna_tablici):
for m in range(dlinna_tablici):
if table[n][m] == 2:
time.sleep(0.5)
Moi_text = Moi_Font.render(letter_table[n][m],m * 50 + left_up_ugolY + 10))
pg.display.update()
pg.display.update()
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
sys.exit()
我的程序可以运行,但是 Pygame 窗口出现在后台,当我尝试使用 ALT + TAB 将其置于最前面时,窗口出现在前台,但程序停止响应。我正在使用 Windows 10 和 Pycharm,Python 版本 3.6,尝试使用 IDLE,但结果没有改变。请帮帮我
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
pygame 中调用 pygame.display.set_mode () 方法参数...
在调用 pygame.display.set_mode () 的时候,如果是用关键字参数,会出现错误 :TypeError: set_mode () takes no keyword arguments
但是在其他的地方,用到关键字参数却没有出现错误,为什么会这样呢?
经题主查阅原因如下:
因为这是 Python 有些底层 API 直接调用的 C, 所以没有实现一些 Python 的特性,只能靠位置来判断参数,这样能最大的获得接近于 C 的性能
以下附上出现错误代码:
1
2
3
4
5
6
7
8
|
import pygame
pygame.init
(
)
screen
=
pygame.
display
.set_mode
(
resolution
=
(
470
,
700
)
)
while True
:
pass
pygame.
quit
(
)
|
import pygame
pygame.init()
screen = pygame.display.set_mode(resolution=(470, 700))
while True:
pass
pygame.quit()
pygame 在触摸底部时无法阻止图像移出屏幕
如何解决pygame 在触摸底部时无法阻止图像移出屏幕?
我正在尝试创建一个窗口,如果精灵试图越过边缘,它就会在该窗口中停止。
这对窗口的所有侧面都有效,除了底部。
这是函数
def barrier(self,width,height):
if self.rect.right >= width:
self.rect.right = width
if self.rect.left <= 0:
self.rect.left = 0
if self.rect.bottom >= height:
self.rect.bottom = height
if self.rect.top <= 0:
self.rect.top = 0
完整代码:
class Block(pygame.sprite.Sprite):
def __init__(self,xcor,ycor,height):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((width,height))
self.image.fill((0,0))
self.rect = self.image.get_rect(center = (xcor,ycor))
self.rand = random.randint(1,8)
def randmovement(self,speed):
x = random.randint(1,40)
if x == 40:
self.rand = random.randint(1,8)
if self.rand == 1:
self.rect.y -= speed
if self.rand == 2:
self.rect.y += speed
if self.rand == 3:
self.rect.x += speed
if self.rand == 4:
self.rect.x -= speed
def barrier(self,wid,hght):
if self.rect.right >= wid:
self.rect.right = wid
if self.rect.left <= 0:
self.rect.left = 0
if self.rect.bottom >= hght:
self.rect.bottom = hght
if self.rect.top <= 0:
self.rect.top = 0
pygame.init()
screenwidth = 1920
screenheight = 1080
screen = pygame.display.set_mode((screenwidth,screenheight))
clock = pygame.time.Clock()
blockgroup = pygame.sprite.Group()
for _ in range(20):
block = Block(screenwidth/2,screenheight/2,40,40)
blockgroup.add(block)
while True:
screen.fill((255,255,255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
for block in blockgroup.sprites():
block.randmovement(3)
block.barrier(screenwidth,screenheight)
blockgroup.update()
blockgroup.draw(screen)
pygame.display.update()
clock.tick(60)
我认为这与精灵本身有关。它是 pygame.Surface() 类的一个实例,我只是在它周围放了一个矩形,但我似乎无法理解为什么它只在 pygame 窗口的底部失败。运行时
print(self.rect.bottom)
它返回预期值(屏幕的高度)。 看起来矩形已经移动到正确的位置,但实际图像继续移出屏幕。图像没有透明区域,只是一个黑色矩形。
编辑:我找到了一个解决方案,它与 pygame 窗口的大小有关。我注意到当主窗口变小时,屏障工作正常。当将高度值降低 200 左右时,屏障似乎起作用了。当然,我不想有一个更小的窗口,所以在barrier()函数中,我只是将那里的高度减少了200。
屏幕的高度是1080,所以把高度值设置为900当然会失败。我认为这可能是 pygame 的错误,而不是我的代码中的错误。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
pygame 层,pygame.sprite
如何解决pygame 层,pygame.sprite?
我已经开始用 python 制作一个简单的 2D 游戏。 这是我的代码
import clock
import time
import inspect
import itertools
import threading
import sys
pygame.init()
# defining the game window
gamedisplay = pygame.display.set_mode((1280,640))
# displaying the game window
pygame.display.set_caption("Game")
background = pygame.image.load("images/background.jpg")
right = [pygame.image.load("images/animate/a1_r.png"),pygame.image.load("images/animate/a2_r.png"),pygame.image.load("images/animate/a3_r.png"),pygame.image.load("images/animate/a4_r.png")]
standing = pygame.image.load("images/animate/standing.png") # 65x87 px
shaking = pygame.image.load("images/animate/shaking.png")
crouching = pygame.image.load("images/animate/crouching.png")
left = [pygame.image.load("images/animate/a1_l.png"),pygame.image.load("images/animate/a2_l.png"),pygame.image.load("images/animate/a3_l.png"),pygame.image.load("images/animate/a4_l.png")]
shop_img = pygame.image.load("images/shop.png") # 230x140 px
clock = pygame.time.Clock()
isJump = False
jumpCount = 10
height = 87
width = 65
def border(x):
if x <= 0 and keys[pygame.K_a]:
return False
elif x >= 1225 and keys[pygame.K_d]:
return False
else:
return True
class StickMan(object):
def __init__(self,x,y,width,height):
self.x = x
self.y = y
self.width = width
self.height = height
self.vel = 7
self.steps = 0
self.left = False
self.right = False
self.crouching = False
self.shaking = False
self.hitBox = (self.x + 20,self.y,70,60)
def draw(self):
if self.steps + 1 >= 20:
self.steps = 0
if self.left:
gamedisplay.blit(left[self.steps // 5],(self.x,self.y))
self.steps += 1
elif self.right:
gamedisplay.blit(right[self.steps // 5],self.y))
self.steps += 1
elif self.shaking:
gamedisplay.blit(shaking,self.y))
elif self.crouching:
gamedisplay.blit(crouching,self.y))
else:
gamedisplay.blit(standing,self.y))
self.steps = 0
def move(self):
if self.vel > 0:
self.x += self.vel
def current_width(self):
self.width = 65
def current_height(self):
if not keys[pygame.K_s]:
self.height = 87
else:
self.height = 50
class shop(object):
def __init__(self,height):
self.x = x
self.y = y
self.width = width
self.height = height
def draw(self):
gamedisplay.blit(shop_img,self.y))
Shop = shop( 200,410,230,140)
Player = StickMan( 100,470,65,87)
def draw():
gamedisplay.blit(background,(0,0))
Player.draw()
Shop.draw()
run = True
# main Loop
while run:
for event in pygame.event.get():
pygame.display.update()
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_a] and border(Player.x):
Player.x -= Player.vel
Player.left = True
Player.right = False
if keys[pygame.K_d] and border(Player.x):
Player.x += Player.vel
Player.left = False
Player.right = True
if not keys[pygame.K_d] and not keys[pygame.K_a]:
Player.left = False
Player.right = False
if keys[pygame.K_s]:
Player.crouching = True
else:
Player.crouching = False
if keys[pygame.K_q]:
Player.shaking = True
else:
Player.shaking = False
if not isJump:
if keys[pygame.K_SPACE]:
isJump = True
else:
if jumpCount >= -10:
Player.y -= (jumpCount * abs(jumpCount)) * 0.5
jumpCount -= 1
else:
jumpCount = 10
isJump = False
pygame.display.flip()
draw()
pygame.display.update()
clock.tick(60)
我的图层有问题。 - 我的角色在商店后面跑。我试图通过使用 pygame.sprite (http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite) 来解决这个问题,但经过多次尝试后,我的男人仍然在商店后面跑。你有什么想法我该如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
关于无法在Atom中使用PyGame打开图像和atom运行python的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于PyGame 中的窗口无法在前台工作、pygame 中调用 pygame.display.set_mode () 方法参数...、pygame 在触摸底部时无法阻止图像移出屏幕、pygame 层,pygame.sprite等相关知识的信息别忘了在本站进行查找喔。
本文标签: