2017-10-13 56 views
0

我有一个Python脚本,其中我想显示一个新的随机矩阵,在象视频流中的当前窗口改变矩阵,每次用户输入字符“P”显示与用户输入的每一个周期

import pylab as plt 
plt.figure() 

matrix = np.zeros((size[0],size[1])) 
plt.matshow(matrix) 
plt.show() 

while(1): 
cmd = raw_input('...') 

if(raw_input == 'p'): 
    matrix = get_rand_mat() 

plt.matshow(matrix) 
plt.show() 

哪里get_rand_mat一些arbitary函数返回正确的尺寸

但这里的大问题的矩阵是,我不得不关闭图形窗口每次我想获得新用户的输入,然后显示更新的矩阵。

如何更新每个用户输入迭代的显示矩阵,而无需关闭窗口以便程序进度?

回答

0

由于matplotlib绘图窗口接管事件循环,因此在窗口打开时控制台的输入是不可能的。

尽管可以使用交互模式(plt.ion()),但这可能会导致其他问题。所以我的建议是完全在一个现有的数字中工作,并将一个事件连接到按键p

import matplotlib.pyplot as plt 
import numpy as np 

size= (25,25) 
get_rand_mat = lambda : np.random.rand(*size) 

fig = plt.figure() 

matrix = np.zeros((size[0],size[1])) 
mat = plt.matshow(matrix, fignum=0, vmin=0, vmax=1) 

def update(event): 
    if event.key == "p": 
     matrix = get_rand_mat() 
     mat.set_data(matrix) 
     fig.canvas.draw_idle() 

fig.canvas.mpl_connect("key_press_event", update) 

plt.show() 

如果运行上面并按p,一个新的随机矩阵在现有图内示出。

相关问题