Пывиста "похитить" фокус после закрытия - PullRequest
0 голосов
/ 16 января 2020

Использование python 3.6 windows и tkinter

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

код


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()

я уже тестирую, снова вызывая принципала gui, убираю мусор, создаю перерыв после пивиста, но ничего не работает

...