Суть проблемы заключается в следующем: self.ui.Show()
. Это запускает ваш пользовательский метод, который в свою очередь запускает этот self.mainWindow.show()
. Это заставляет self.mainWindow
показывать, но вы подкласс mousePressEvent
для ui
, а не self.mainWindow
! Так что это событие не запускается, потому что вы нажимаете на неправильный виджет.
Вместо этого, поскольку ui
- это QWidget
, позвоните self.ui.show()
. Возможно, вам также придется поместить self.setWindowFlags(QtCore.Qt.Window)
в конструктор ui
. При этом событие мыши запускается, как и ожидалось, когда пользователь нажимает на него.
Некоторые примечания:
Я сомневаюсь, что вы действительно хотите создать QMainWindow
в QWidget
. Это кажется странным. Вместо этого рассмотрите возможность подкласса QMainWindow
, так как он должен быть виджетом 'top'.
Также старайтесь избегать импорта таких модулей, как from PySide2.QtCore import *
, и импортируйте их вот так вместо from PySide2 import QtCore
. Это плохая практика, загрязняет область действия вашего модуля и делает код намного более нечитаемым / не обслуживаемым, так как трудно отследить, откуда берутся эти переменные.
О, и, ради бога, используйте немного вертикального белого -пространство:)