Как сделать основное окно Tkinter постоянно активным после нажатия кнопки

У меня есть программа для расчета. В программе есть кнопка, по нажатию на которую открывается pdf документ. При этом основное окно программы становится неактивным, до тех пор, пока pdf-документ не закроется. Получается что не закрыв документ я не могу дальше работать в основном окне. Мне нужно, чтобы и pdf документ был открытым и одновременно можно было работать в программе.Как решить эту проблему?


import tkinter as tk
from tkinter import ttk
from tkinter import *
import math
import os

def gost_1320_74():
    os.system("gost1320-74.pdf")

class mainw(tk.Tk):
    def __init__(self):
        super().__init__()
        # Стилизация виджетов:
        style = ttk.Style()
        #style.theme_use('winnative')
        style.configure(".",background="palegreen",foreground="black")
        self.title('Расчет веса баббита для перезаливки вкладыша')
        self.geometry('700x280+650+500')
        self.resizable(False,False)
        self.focus()

        def on_change(_event):
            index = self.etype.current()
            if index < 0:
                value = ""
            else:
                pair = items[index]  
                value = pair[1]

            self.ent3.delete(0, tk.END)
            self.ent3.insert(0, value)

        items = [("Б88", "7.35"),("Б83", "7.38"),("Б83С", "7.4"),("БН", "9.55"),("Б16", "9.29"),("БС6", "10.05"),]

    # Создание рамки для меню:
        self.frm1 = ttk.Frame()
        self.frm1.pack(fill=X)
        self.btn = ttk.Button(self.frm1, text="ГОСТ 1320-74", command = gost_1320_74)
        self.btn.grid(row=1,column=1)
        self.lbl = ttk.Label(self.frm1, text="Марка баббита")
        self.lbl.grid(row=1,column=2,sticky=E)
        type_b = [item[0] for item in items]
        self.etype = ttk.Combobox(self.frm1, value=type_b)
        self.etype.grid(row=1,column=3)
        self.etype.bind("<<ComboboxSelected>>", on_change)


    # Создание рамки:
        self.frm = ttk.Frame()
        self.frm.pack(fill=X)

    # Создание ярлыков столбца 1:
        self.lbl = ttk.Label(self.frm, text = 'Формула расчета: G = πDxby (гр)')
        self.lbl.grid(row=1, column = 2)

        self.lbl1 = ttk.Label(self.frm, text = "D (Диаметр расточки вкладыша под заливку): ")
        self.lbl1.grid(row=2, column=1, sticky=W, ipadx=6, ipady=6, padx=6)

        self.lbl2 = ttk.Label(self.frm, text = "х (толщина заливаемого слоя  баббита (толщина слоя баббита \n на вкладыше и припуск на обработку)):  ")
        self.lbl2.grid(row=3, column=1, sticky=W, ipadx=6, ipady=6, padx=6)

        self.lbl3 = ttk.Label(self.frm, text = "b (длина вкладыша, включая припуск на обработку): ")
        self.lbl3.grid(row=4, column=1, sticky=W, ipadx=6, ipady=6, padx=6)

        self.lbl4 = ttk.Label(self.frm, text = "y (удельный вес баббита): ")
        self.lbl4.grid(row=5, column=1, sticky=W, ipadx=6, ipady=6, padx=6)

    # Создание полей ввода столбца 2:
        self.ent = ttk.Entry(self.frm)
        lstHandle.append(self.ent)
        self.ent.grid(row=2, column=2)
        self.ent1 = ttk.Entry(self.frm)
        lstHandle.append(self.ent1)
        self.ent1.grid(row=3, column=2)
        self.ent2 = ttk.Entry(self.frm)
        lstHandle.append(self.ent2)
        self.ent2.grid(row=4, column=2)
        #m = 7.38
        self.ent3 = ttk.Entry(self.frm)
        lstHandle.append(self.ent3)
        self.ent3.grid(row=5, column=2)


    # Создание ярлыков столбца 3:
        self.edizm = ttk.Label(self.frm, text = "см")
        self.edizm.grid(row=2, column=3)
        self.edizm1 = ttk.Label(self.frm, text = "см")
        self.edizm1.grid(row=3, column=3)
        self.edizm2 = ttk.Label(self.frm, text = "см")
        self.edizm2.grid(row=4, column=3)
        self.edizm3 = ttk.Label(self.frm, text = "г/см3")
        self.edizm3.grid(row=5, column=3)

    # Создание ярлыков для вывода результата:
        self.rezult = ttk.Label(self.frm, text = "Результат: ")
        self.value = tk.StringVar()
        self.rezult2 = ttk.Entry(self.frm, textvariable=self.value)
        self.rezult3 = ttk.Label(self.frm, text = "кг")
        self.rezult.grid(row=6, column=1, sticky=W, ipadx=6, ipady=6, padx=6)
        self.rezult2.grid(row=6,column=2)
        self.rezult3.grid(row=6, column=3)

    # Создание кнопки "Расчитать":
        self.btn = ttk.Button(self.frm, text="Расчитать", command = self.convert)
        lstHandle.append(self.btn)
        self.btn.grid(row=8,column=3, pady=20, sticky=N)

        self.mainloop()

Ответы (0 шт):