При закрытии окна QPainter закрывается окно tkinter

Рейтинг: 0Ответов: 0Опубликовано: 07.03.2023

Проблема в том, что при закрытии окна QPainter закрывается окно Tkinter. Как можно исправить? Пробовал в разные места поставить input - не помогло...

import tkinter as tk
from tkinter import ttk
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QPen, QBrush
from PyQt5.QtCore import Qt

root = tk.Tk()
root.title("Title")
root.geometry("780x630")
root.resizable(False, False)

main_frame = ttk.Frame(root, padding=(20, 10))
main_frame.grid(sticky="NSEW")

entry_value = tk.StringVar()
result_value = tk.StringVar(value="Результат")

def click_btn():
    number = float(entry_value.get())
    result = number * 1
    result_value.set(f"{result}")
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()

        def initUI(self):
            self.setGeometry(200, 100, 600, 550)
            self.show()

        def paintEvent(self, e):
            qp = QPainter()
            qp.begin(self)

            self.recta(qp)

            qp.end()

        def recta(self, qp):
            qp.setPen(QPen(Qt.black, 2, Qt.SolidLine))
            qp.setBrush(QColor('white'))
            qp.drawRect(210,300,180,200)

    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = Example()
        ex.show()
        sys.exit(app.exec_())

variant_var = tk.IntVar()

display_result = ttk.Label(main_frame, text="Результат", font=("Arial", 10), textvariable=result_value, padding=(0, 7, 0, 7))
header = ttk.Label(main_frame, text="label", font=("Arial, 15 bold"), padding=(0, 0, 0, 10))
enter_lable = ttk.Label(main_frame, text="input:", font=("Arial, 10"))
entry_data = ttk.Entry(main_frame, width=20, textvariable=entry_value)
btn = ttk.Button(main_frame, text="button", width=20, command=click_btn)

r1 = ttk.Radiobutton(main_frame, text="radio1", padding=(0, 0, 0, 20), variable=variant_var, value=1)
r2 = ttk.Radiobutton(main_frame, text="radio2", padding=(0, 0, 0, 20), variable=variant_var, value=2)
r3 = ttk.Radiobutton(main_frame, text="radio3", padding=(0, 0, 0, 20),variable=variant_var, value=3)

header.grid(column=1)
r1.grid(row=1, column=0)
r2.grid(row=1, column=1)
r3.grid(row=1, column=2)
enter_lable.grid(sticky="W", pady=5)
entry_data.grid(row=2, column=1, sticky="EW", pady=5)
btn.grid(row=3, column=1, ipady=2)
display_result.grid(row=5, column=1)

root.mainloop()

Ответы

Ответов пока нет.