Не работает передвижение программы и сворачивание в pyqt5

я сделал .ui оформление программы и убрал поля. При переводе в .py программу и добавление данных строк перемещение работает:

def mousePressEvent(self, event):
        self.oldPos = event.globalPos()
def mouseMoveEvent(self, event):
        delta = QPoint (event.globalPos() - self.oldPos)
        self.move(self.x() + delta.x(), self.y() + delta.y())
        self.oldPos = event.globalPos()

но когда я хочу работать в отдельном файле не переводя .ui в .py, программа запускается, но не работает перемещение и сворачивание:

from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QPoint

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        uic.loadUi('config.ui', self)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)   
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        
        # логика
        def mousePressEvent(self, event):
            self.oldPos = event.globalPos()
        def mouseMoveEvent(self, event):
            delta = QPoint (event.globalPos() - self.oldPos)
            self.move(self.x() + delta.x(), self.y() + delta.y())
            self.oldPos = event.globalPos()



if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

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

Автор решения: S. Nick
  1. всегда предоставляйте минимально-воспроизводимый пример. Вы не предоставили модудь config.ui и я взял его из предыдущего вашего вопоса.

  2. В питоне отступы имеют значения


import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
#from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtCore import QPoint


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(460, 615)
        MainWindow.setBaseSize(QtCore.QSize(0, 0))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.main_window_frame = QtWidgets.QFrame(self.centralwidget)
        self.main_window_frame.setGeometry(QtCore.QRect(5, 10, 450, 600))
        self.main_window_frame.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.main_window_frame.setStyleSheet("background-color: rgb(52, 73, 94);\n"
"border-radius: 20px;\n"
"\n"
"")
        self.main_window_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.main_window_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.main_window_frame.setObjectName("main_window_frame")
        self.tab_menu_frame = QtWidgets.QFrame(self.main_window_frame)
        self.tab_menu_frame.setGeometry(QtCore.QRect(0, 0, 450, 30))
        self.tab_menu_frame.setStyleSheet("background-color: rgb(35, 50, 65);\n"
"border-top-left-radius: 20px;\n"
"border-top-right-radius: 20px;\n"
"border-bottom-left-radius: 0px;\n"
"border-bottom-right-radius: 0px;")
        self.tab_menu_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.tab_menu_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.tab_menu_frame.setObjectName("tab_menu_frame")
        self.button_exit = QtWidgets.QPushButton(self.tab_menu_frame)
        self.button_exit.setGeometry(QtCore.QRect(415, 8, 15, 15))
        self.button_exit.setStyleSheet("QPushButton {\n"
"    border-radius: 7px;\n"
"    background-color: rgb(231, 76, 60);\n"
"}\n"
"QPushButton:hover:hover{\n"
"    background-color: rgb(192, 57, 43);\n"
"}")
        self.button_exit.setText("")
        self.button_exit.setObjectName("button_exit")
        self.button_fullscrean = QtWidgets.QPushButton(self.tab_menu_frame)
        self.button_fullscrean.setGeometry(QtCore.QRect(395, 8, 15, 15))
        self.button_fullscrean.setStyleSheet("QPushButton {\n"
"    border-radius: 7px;\n"
"    background-color: rgb(46, 204, 113);\n"
"}\n"
"QPushButton:hover:hover{\n"
"    background-color: rgb(39, 174, 96);\n"
"}")
        self.button_fullscrean.setText("")
        self.button_fullscrean.setObjectName("button_fullscrean")
        self.label = QtWidgets.QLabel(self.tab_menu_frame)
        self.label.setGeometry(QtCore.QRect(200, 4, 191, 21))
        font = QtGui.QFont()
        font.setFamily("Myanmar Text")
        font.setPointSize(9)
        self.label.setFont(font)
        self.label.setStyleSheet("color: rgb(236, 240, 241);")
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "AC"))
        self.label.setText(_translate("MainWindow", "<strong>Name AC</strong>"))
        

#class MainWindow(QtWidgets.QMainWindow):
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

#        uic.loadUi('config.ui', self)
        self.setupUi(self)
        
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)   
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        
    # <---- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()
        
    def mouseMoveEvent(self, event):
        delta = QPoint (event.globalPos() - self.oldPos)
        self.move(self.x() + delta.x(), self.y() + delta.y())
        self.oldPos = event.globalPos()
    # <---- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка