Как сгенерировать сюжет, приостановить программу, пока рисунок не закроется, а затем вернуться к основной функции - PullRequest
0 голосов
/ 01 февраля 2019

В настоящее время я пытаюсь создать программу, которая позволит мне быстро переваривать данные.Начало программы (не показано) принимает данные и обрабатывает их, чтобы сделать их удобочитаемыми.У меня проблема в том, как создать основную функцию, к которой программа будет возвращаться после того, как фигура будет сгенерирована и впоследствии закрыта, чтобы упростить просмотр многих графиков один за другим.

Постановка задачи : Я хочу сгенерировать график, открыть его и сделать паузу программы в фоновом режиме, пока фигура на экране.Затем, когда он закроется, я хочу, чтобы программа возобновила работу и вернулась к основному.

Текущий контрольно-пропускной пункт : я пробовал несколько различных способов создания фигуры, но я не могу сделать и то и другое: (а) правильно сгенерировать фигуру и (б) иметьвозобновить работу программы и вернуться на главную одновременно.Я обнаружил, что метод 'try -> finally' помогает мне вернуться к основной функции, но теперь мои графики не появляются и ядро ​​вылетает.

Код выглядит следующим образом:

import matplotlib.pyplot as plt

class App(cmd.Cmd):

    prompt = 'Plot an Individual Pulse (a) or the entire array of data (b)? Just type a or b please: '

    def do_a(self, arg):
        userchoice= input('Would you like to see (a) Trimmed Data, or (b) another option (which the code is omitted for space)')
        if userchoice == "a":
            try:
                plt.plot(TrimmedVal)
                plt.title("All Trimmed Data (Includes 0's)")
                plt.ylabel("Number of Particles")
                plt.xlabel("Time (s)")
                plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
                plt.draw()
                while plt.fignum_exists(1):
                    plt.pause
                return 
            finally: App().cmdloop()

if __name__ == '__main__':
    App().cmdloop()   

1 Ответ

0 голосов
/ 01 февраля 2019

То, что вы запрашиваете, является значением по умолчанию в неинтерактивном режиме, т. Е. Если вы запускаете сценарий или plt.ioff() вызывается в интерактивных интерпретаторах.

import matplotlib.pyplot as plt

def myfunc():
    plt.plot(..)
    plt.show()

def main()
    myfunc()
    print("we're back in main")

main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...