2017-10-13 99 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,一個新的隨機矩陣在現有圖內示出。

相關問題