pyvista "похитить" фокус после закрытия

Использование окон Python 3.6 и tkinter

с использованием tkinter для вызова графа pyvista для нескольких изображений основной графический интерфейс теряет фокус после закрытия холста pyvista, если любой другой вариант - вызов без закрытия pyvista, сбой всей системы

Код


from tkinter.ttk import Notebook
from tkinter import Canvas
from tkinter import messagebox as msg
from tkinter import filedialog
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.widgets import Slider, Button, RadioButtons
from matplotlib import pyplot, cm
from glob import glob
from config import *
from win32api import GetSystemMetrics
import matplotlib.pyplot as plt
from matplotlib.pyplot import plot, draw, show 
#from vtk import *
from vtkplotter import *
from tkinter import *
from stl import mesh
from mpl_toolkits import mplot3d
from matplotlib import pyplot


import tkinter as tk
#import dicom
import os
import numpy as np
import sys
import warnings
import ctypes
#import gdcm


import pydicom
import time
import msvcrt as m
import datetime
import time
import cv2
import tkinter
import PIL.Image, PIL.ImageTk
import path
import imgHandle
import re
import win32api
import gc
import io
import matplotlib.pyplot as plt
import vtk

#import vtkplotlib as vpl
from stl.mesh import Mesh


import pyvista as pv
from pyvista import examples


tipo_img=".dcm"
global ImageDir


def dentesviewer():

    plotter = pv.Plotter(shape=(2, 2))
    plotter.subplot(0, 0)
    plotter.add_text("Render Window 0", font_size=30)
    plotter.add_mesh(examples.load_globe())
    plotter.subplot(0, 1)
    plotter.add_text("Render Window 1", font_size=30)
    plotter.add_mesh(pv.Cube(), show_edges=True, color="tan")
    plotter.subplot(1, 0)
    plotter.add_text("Render Window 2", font_size=30)
    sphere = pv.Sphere()
    plotter.add_mesh(sphere, scalars=sphere.points[:, 2])
    plotter.add_scalar_bar("Z")
    # plotter.add_axes()
    plotter.add_axes(interactive=True)
    plotter.subplot(1, 1)
    plotter.add_text("Render Window 3", font_size=30)
    plotter.add_mesh(pv.Cone(), color="g", show_edges=True)
    plotter.show_bounds(all_edges=True)
    # Display the window
    plotter.show()
    plotter.close()


class Dicomine(tk.Tk):

    #------------------------------------------------------
    def __init__(self):
        # Inherit from tk.Tk
        super().__init__()
        if os.path.exists("*.npy"):
            os.remove("*.npy")
        else:
            print("The file does not exist")


        width=int(GetSystemMetrics(0)*0.8)
        height=int(GetSystemMetrics(1)*0.8)
        #print('dimensiones ',width,' ',height)
        # Title and size of the window
        self.title('Ortodoncia')
        #self.geometry('600x400')
        #print(' geometry  ',str(int(0.5*width))+'x'+str(int(0.5*height)))
        self.geometry(str(int(0.5*width))+'x'+str(int(0.15*height)))
        # Create the drop down menus
        self.menu = tk.Menu(self,bg='lightgrey',fg='black')
        self.file_menu = tk.Menu(self.menu,tearoff=0,bg='lightgrey',fg='black')
        self.file_menu.add_command(label='geometry',command=dentesviewer)
        self.file_menu.add_command(label='Quit',command=self.quit)
        self.menu.add_cascade(label='viewer',menu=self.file_menu)
        self.config(menu=self.menu)
        # Create the tabs (Graph, File Explorer, etc.)
        self.notebook = Notebook(self)
        self.notebook.pack(fill=tk.BOTH, expand=1)





if __name__ == '__main__':
    dicom_gui = Dicomine()
    dicom_gui.mainloop()

Я уже тестирую вызов основного графического интерфейса снова, очищаю мусор, создаю перерыв после pyvista, но ничего не работает

0 ответов

Другие вопросы по тегам