我有这个例子代码:
import pygame
import numpy as np
import matplotlib.pyplot as plt
pygame.init()
pygame.display.set_caption('Test')
################## Globals ######################
FONT = pygame.font.SysFont('Cambria', 20)
CLOCK = pygame.time.Clock()
SCREEN_WIDTH, SCREEN_HEIGHT = 600, 700
screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
################ Functions ######################
def draw():
pygame.event.pump()
screen.fill((200,200,200))
text = 'TEST'
msg = FONT.render(text,True,(0,0,0))
text_width,text_height = FONT.size(text)
screen.blit(msg,( (SCREEN_WIDTH-text_width)//2, (SCREEN_HEIGHT-text_height)//2 ))
# update
pygame.display.update()
if __name__ == '__main__':
# main pygame loop
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
x = np.linspace(0,10,200)
y = np.sin(x)
plt.plot(x,y)
plt.savefig('plot.pdf')
draw()
CLOCK.tick(60)
当我启动程序时,它看起来像这样:
但是我一按空格键(因此调用plt.plot()
),窗口就会像这样缩小:
有人能解释为什么会发生这种情况,也许如何解决它。
1条答案
按热度按时间2hh7jdfx1#
不要混用框架,混用框架总是意味着某种未定义的行为。框架之间的交互可能很差或者完全冲突。让它在你的系统上工作并不意味着它在另一个系统上或任何框架的不同版本上也能工作。
这个特殊的问题与显示器的DPI比例有关。要么是其中一个模块有bug,要么是pygame和matplotlib不能正常配合使用。为什么要这样呢?它们是独立开发的。