tkinter -Fatal Python error: PyEval_RestoreThread: NULL tstate - PullRequest
0 голосов
/ 29 сентября 2018

В интерфейсе tkinter, который я создал, если я пытаюсь записать текстовый файл, когда график matplotlib открыт в окне tkinter, то python выдает следующую ошибку:

Fatal Python error: PyEval_RestoreThread: NULL tstate

Current thread 0x00002f58 (most recent call first):
  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5.py", line 164 in mainloop
  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 193 in __call__
  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 253 in show
  File "C:\Users\rohit\python\connections.py", line 40 in draw_connected_pans
  File "tlscript.pyw", line 1325 in draw_all_pans
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699 in __call__
  File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1277 in mainloop
  File "tlscript.pyw", line 1455 in <module>

Если я закрою окно tkinter, содержащееplot, а затем выполните функцию графического интерфейса для написания текстового файла, тогда ошибка не возникает

Функция для создания matplotlib plot

функция, содержащая строку 40 в файле connections.py, как указано выше traceback

def draw_connected_pans(G):
    Pos = nx.spring_layout(G)
    nx.draw_networkx(G, pos = Pos)
    plt.axis('off')
    plt.show()

функция, содержащая строку 1325 в tlscript.py, как в приведенной выше трассировке

def draw_all_pans():
        try:
            application_window = window
            connections.draw_connected_pans(graph)
        except:
            exceptionhandler(traceback.format_exc())

Код, который вызывает ошибку

connectionmenu2.add_command(label="Save as html plot of connected entities of pan ", command=save_connection_html)

@mydecorator
def save_connection_html():
    try:
        if graph:
            application_window = window
            pan = simpledialog.askstring('Prompt', 'Enter PAN', parent = application_window)
            connections.use_d3(graph,pan)
    except:
        exceptionhandler(traceback.format_exc())

def use_d3(H,pan):
    tree = return_json(H,pan)
    htmlx =htmls.htmlfile.replace('var flare','var flare = '+json.dumps(tree)+';')
    with open('connection_chart.html', 'w', encoding ='utf-8') as file:
        file.write(htmlx)

1 Ответ

0 голосов
/ 30 сентября 2018

Я решил это, передав аргумент block = False в plt.show ()

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