Python Pyqt5鼠标事件不适用于我的自定义选项卡栏

Python Pyqt5鼠标事件不适用于我的自定义选项卡栏,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,因此,我在使用pyqt5制作自定义选项卡栏时遇到了问题。我见过一些例子,但在中实现它们时,它们似乎对我不起作用。以下是我到目前为止的代码(我只是删掉了一些注释文本,因为它不需要): 这里的问题是鼠标移动事件似乎没有连接到pyqt5鼠标事件。我读过,当类中的函数有一个特定的函数名或类似的东西时,它应该连接?这是相当混乱,我的登录窗口似乎没有移动。这个鼠标事件非常混乱,我尝试了其他两种方法,但最终删除了实现,因为它对我来说毫无意义 以下是UI的下载链接: 下面是UI的外观(左侧的层次结构集中在bar

因此,我在使用pyqt5制作自定义选项卡栏时遇到了问题。我见过一些例子,但在中实现它们时,它们似乎对我不起作用。以下是我到目前为止的代码(我只是删掉了一些注释文本,因为它不需要):

这里的问题是鼠标移动事件似乎没有连接到pyqt5鼠标事件。我读过,当类中的函数有一个特定的函数名或类似的东西时,它应该连接?这是相当混乱,我的登录窗口似乎没有移动。这个鼠标事件非常混乱,我尝试了其他两种方法,但最终删除了实现,因为它对我来说毫无意义

以下是UI的下载链接:

下面是UI的外观(左侧的层次结构集中在bar QLabel小部件上):

我试图让顶部的栏可以拖动,而不是整个窗口,只是顶部的栏而已。有什么帮助吗?
如果您需要更多信息,或者对我的工作有疑问,请询问我,我会回复。

。。。要使顶部栏可以拖动,而不是整个窗口
对不起,我不明白你要拖放什么。
试试看:


更新

我仍然希望这样,当您按住鼠标并将鼠标放在窗口顶部的QLabel区域时,窗口可以在屏幕上拖动,因此,QLabel区域应充当选项卡。x按钮所在的区域。我该怎么做呢

从PyQt5导入QtWidgets、QtCore、uic
从PyQt5.QtCore导入Qt、QObject、QThread、pyqtSignal、QCoreApplication、QPoint
从PyQt5.QtWidgets导入(QApplication、QPushButton、QVBoxLayout、QWidget、,
QFormLayout、QGridLayout、QLabel、QDialog、QHBoxLayout、,
QDesktopWidget,QMainWindow)
类登录窗口(QMainWindow):
定义初始化(自):
super(LoginWindow,self)。\uuuu init\uuuuu()
uic.loadUi(“LoginWindow2.ui”,self)
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
自动按下=错误
self.start=QPoint(0,0)
self.center()
self.oldPos=self.pos()
def mouseReleaseEvent(自、QMouseEvent):
自动按下=错误
def鼠标压力事件(自身、事件):
self.oldPos=event.globalPos()
def mouseMoveEvent(自身、事件):

如果event.pos().y()>20:#我尝试了这个代码,结果成功了!非常感谢S.Nick!但我仍然希望这样,当您按住鼠标并将鼠标放在窗口顶部的QLabel区域时,窗口可以在屏幕上拖动,因此,QLabel区域应充当选项卡。x按钮所在的区域。我该怎么做呢?是的!!!非常感谢你!这正是我想要的!我真的很感激你,老兄D
from PyQt5 import QtWidgets, uic,QtCore
from PyQt5.QtCore import Qt,QObject,QThread,pyqtSignal,QCoreApplication,QPoint
import PyQt5.QtCore
from PyQt5.QtWidgets import QApplication,QPushButton,QVBoxLayout,QWidget,QFormLayout,QGridLayout,QLabel,QDialog,QHBoxLayout,QDesktopWidget

class LoginWindow(QWidget):
    def __init__(self):
        self.App = QtWidgets.QApplication([])
        self.LoadedApp = uic.loadUi("LoginWindow2.ui")

        self.LoadedApp.setWindowFlags(Qt.FramelessWindowHint)

        self.pressing = False
        self.start = QPoint(0, 0)
        self.center()
        self.oldPos = self.LoadedApp.pos()
        self.LoadedApp.show()
        self.App.exec()

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressing = False

    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()

    def mouseMoveEvent(self, event):
        print("1")
        delta = QPoint (event.globalPos() - self.oldPos)
        #print(delta)
        self.move(self.x() + delta.x(), self.y() + delta.y())
        self.oldPos = event.globalPos()

    def center(self):
        qr = self.LoadedApp.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.LoadedApp.move(qr.topLeft())

LoginWindow = LoginWindow()

from PyQt5 import QtWidgets, QtCore, uic
from PyQt5.QtCore import Qt, QObject, QThread, pyqtSignal, QCoreApplication, QPoint
from PyQt5.QtWidgets import (QApplication, QPushButton, QVBoxLayout, QWidget,
                             QFormLayout, QGridLayout, QLabel, QDialog, QHBoxLayout,
                             QDesktopWidget, QMainWindow)

class LoginWindow(QMainWindow):                                 # - (QWidget):
    def __init__(self):
        super(LoginWindow, self).__init__()                     # +
#        self.App = QtWidgets.QApplication([])
#        self.LoadedApp = uic.loadUi("LoginWindow2.ui")
        uic.loadUi("LoginWindow2.ui", self)

#        self.LoadedApp.setWindowFlags(Qt.FramelessWindowHint)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)

        self.pressing = False
        self.start = QPoint(0, 0)
        self.center()
#        self.oldPos = self.LoadedApp.pos()
        self.oldPos = self.pos()              
#        self.LoadedApp.show()
#        self.App.exec()

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressing = False

    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()

    def center(self):
#        qr = self.LoadedApp.frameGeometry()
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
#        self.LoadedApp.move(qr.topLeft())
        self.move(qr.topLeft())


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = LoginWindow()
    w.show()
    sys.exit(app.exec_())
from PyQt5 import QtWidgets, QtCore, uic
from PyQt5.QtCore import Qt, QObject, QThread, pyqtSignal, QCoreApplication, QPoint
from PyQt5.QtWidgets import (QApplication, QPushButton, QVBoxLayout, QWidget,
                             QFormLayout, QGridLayout, QLabel, QDialog, QHBoxLayout,
                             QDesktopWidget, QMainWindow)

class LoginWindow(QMainWindow):                                 
    def __init__(self):
        super(LoginWindow, self).__init__()                     
        uic.loadUi("LoginWindow2.ui", self)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.pressing = False
        self.start = QPoint(0, 0)
        self.center()
        self.oldPos = self.pos()              

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressing = False

    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()

    def mouseMoveEvent(self, event):

        if event.pos().y() > 20:                                    # <---
            return                                                  # <---

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

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = LoginWindow()
    w.show()
    sys.exit(app.exec_())