Внесите изменения из одного экземпляра приложения в другой экземпляр

➤ Что я хочу: у меня есть окно и метка в этом окне, когда приложение запускается в первый раз, метка показывает текст по умолчанию, но если пользователь пытается запустить второе пространство, второе пространство не t запуска, вместо этого он меняет метку в первом экземпляре, который уже был запущен

➤ Проблема, с которой я столкнулся: я успешно остановил запуск второго экземпляра с помощью. , но я не мог понять, как изменить метку в первую очередь.

➤ Минимально воспроизводимый код:

import sys
from PyQt5.QtWidgets import *
from win32 import win32gui


class Window(QMainWindow):

    def __init__(self) -> None:
        super().__init__()
        self.setWindowTitle('My Program')
        self.resize(400, 400)
        self.set_label()
    
    def set_label(self, text='This is an example'):
        self.lab = QLabel(self)
        self.lab.move(50, 50)
        self.lab.setText(text)


if __name__ == "__main__":
    
    # Check if app is already running & Close the app
    def windowEnumerationHandler(hwnd, top_windows):
        top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))
    top_windows = []
    win32gui.EnumWindows(windowEnumerationHandler, top_windows)
    for i in top_windows:
        if i[1] == 'My Program':
            print('App is already running')
            
            # I know below line is wrong [tha's why commented out]
            # Window.set_label('Success')       # How to achieve it
            ## I want the label text to be changed in the already running instance
            
            sys.exit()    # Exit app (second instance)
    
    
    # Starting Application
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    app.exec()

person Ecto Ruseff    schedule 14.01.2021    source источник
comment
Я думаю, вам, вероятно, нужно запустить поток в фоновом режиме, который проверяет, открывается ли новое окно. Если это так, то вы меняете текст. Я не думаю, что вы можете изменить его из seoarate окна   -  person The Pilot Dude    schedule 15.01.2021
comment
@the-pilot-dude, я думал об этом, но не повлияет ли это на эффективность программы (потому что она будет работать все время)   -  person Ecto Ruseff    schedule 15.01.2021
comment
Это было бы, но не так сильно, потому что все, что вы будете делать, это запускать небольшой цикл while   -  person The Pilot Dude    schedule 15.01.2021