matplotlib 调用plt.plot()缩小pygame窗口

ipakzgxi  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(140)

我有这个例子代码:

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()),窗口就会像这样缩小:

有人能解释为什么会发生这种情况,也许如何解决它。

2hh7jdfx

2hh7jdfx1#

不要混用框架,混用框架总是意味着某种未定义的行为。框架之间的交互可能很差或者完全冲突。让它在你的系统上工作并不意味着它在另一个系统上或任何框架的不同版本上也能工作。
这个特殊的问题与显示器的DPI比例有关。要么是其中一个模块有bug,要么是pygame和matplotlib不能正常配合使用。为什么要这样呢?它们是独立开发的。

相关问题