PYQT5 通过动态加载UI的方式,如何实现窗口无边框且能够移动?

PYQT5 通过动态加载UI的方式,如何实现窗口无边框且能够移动?

我就是不懂在动态加载UI的情况下,把mousePressevent, mouseMoveevent ,mouseReleaseEvent函数调用起来
class Main_window(QMainWindow):
_startPos = None
_endPos = None
_isTracking = False

def __init__(self):
    super().__init__()
    # 从文件中加载UI定义
    self.ui = uic.loadUi("plc_backup_tool.ui")
    # 参数文件地址
    self.msg = '请输入参数文件地址!'
    self.ui.parameter_file_address.setText(self.msg)
    # 开始备份按钮disable
    self.ui.start_backup.setEnabled(False)
    # 定时刷新检查文件参数内容地址不为空!
    self.time1 = QTimer()
    self.time1.start(100)
    self.time1.timeout.connect(self.button_enable)

def mouseMoveEvent(self, e: QMouseEvent):  # 重写移动事件
    self._endPos = e.pos() - self._startPos
    self.move(self.pos() + self._endPos)

def mousePressEvent(self, e: QMouseEvent):
    if e.button() == Qt.LeftButton:
        self._isTracking = True
        self._startPos = QPoint(e.x(), e.y())

def mouseReleaseEvent(self, e: QMouseEvent):
    if e.button() == Qt.LeftButton:
        self._isTracking = False
        self._startPos = None
        self._endPos = None

def button_enable(self):
    """定时刷新界面检查参数文件地址 有无内容,有内容了才显示备份按钮"""
    if self.ui.parameter_file_address.text() != "" and self.ui.parameter_file_address.text() != self.msg:
        self.ui.start_backup.setEnabled(True)
        self.time1.stop()

运行窗口

if name == "main":
# 固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行
app = QApplication(sys.argv)
app.setStyle("Fusion")
# 初始化
myWin = Main_window()
# 只显示最小化按钮
# myWin.ui.setWindowFlags(Qt.WindowMinimizeButtonHint)
# 窗口无边框化
myWin.ui.setWindowFlags(Qt.FramelessWindowHint)
# 窗口有边框无最小最大按钮
# myWin.ui.setWindowFlags(Qt.CustomizeWindowHint)
myWin.ui.show()
# 程序运行,sys.exit死循环监控屏幕。
sys.exit(app.exec_())

实现无边框窗口需要设置参数。setWindowFlag(Qt::FramelessWindowHint); 隐藏标题栏就是无边框
然后移动就是需要重写mousePressevent, mouseMoveevent ,mouseReleaseEvent函数
具体实现你可以参考下我的博客。虽然我用的是qt写的。但是原理都一样
https://blog.csdn.net/weixin_43676892/article/details/112560496?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165545505116782390555443%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165545505116782390555443&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-112560496-null-null.nonecase&utm_term=qt%E6%97%A0%E8%BE%B9%E6%A1%86&spm=1018.2226.3001.4450