Окно PyQt5 не работает с окном tkinter

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import Chat
import Avtorization
from tkinter import *


class AvtorizationApp(Avtorization.Ui_MainWindow):
    def __init__(self, url):
        super().__init__()
        self.setupUi(self)
        self.pushButton.pressed.connect(self.get_password)

    def get_password(self):
        avtorization.close()
        choose_chat()

def choose_chat():
    root = Tk()

    def open_chat():
        root.destroy()

    Button(root, text='click', width=48, height=3, command=open_chat).pack()

    root.mainloop()
    mainwindow = ExampleApp('ужегов виктор', '34')
    mainwindow.show()


class ExampleApp(Chat.Ui_MainWindow):

    def __init__(self, userone, usertwo):
        super().__init__()
        self.setupUi(self)


w = Tk()
def ex():

    w.destroy()
Button(w,text='click', command=ex).pack()
w.mainloop()
app = QtWidgets.QApplication(sys.argv)
avtorization = AvtorizationApp("http://127.0.0.1:5000")
avtorization.show()
app.exec_()

Вот мой полный код В чем собственно проблема

def choose_chat():
    root = Tk()

    def open_chat():
        root.destroy()

    Button(root, text='click', width=48, height=3, command=open_chat).pack()

    root.mainloop()
    mainwindow = ExampleApp('12', '34')
    mainwindow.show()

Когда программа доходит до сюда то окно tkinter закрывается, а окно PyQt5 открывается и тут же закрывается

Я пробовал добавить app.exec_() после mainwindow.show() Не помогает.

Помогите пожалуйста


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

Автор решения: S. Nick

я не могу проверить ваш код, но судя по вашему описанию, в функции def choose_chat(): вы создаете экземпляр mainwindow = ExampleApp('12', '34'). mainwindow - это локальная переменная, которая удаляется сборщиком мусора. Вам надо продлить ей(mainwindow) срок жизни. Попробуйте включить ее(choose_chat) в класс AvtorizationApp так:

...

class AvtorizationApp(Avtorization.Ui_MainWindow):
    def __init__(self, url):
        super().__init__()
        self.setupUi(self)
        self.pushButton.pressed.connect(self.get_password)

    def get_password(self):
        avtorization.close()
        self.choose_chat()                                       # + self

    def choose_chat(self):                                       # + self
        root = Tk()

        def open_chat():
            root.destroy()

        Button(root, text='click', width=48, height=3, command=open_chat).pack()

        root.mainloop()
        self.mainwindow = ExampleApp('ужегов виктор', '34')      # + self
        self.mainwindow.show()                                   # + self
...
→ Ссылка