➤ Что я хочу: у меня есть окно и метка в этом окне, когда приложение запускается в первый раз, метка показывает текст по умолчанию, но если пользователь пытается запустить второе пространство, второе пространство не 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()