Как сделать основное окно 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()