只需要将MovableWindow的基类改为QDialog即可:

from PyQt5.QtWidgets import QDialog,QApplication
from PyQt5.QtCore import Qt,QPoint
import sys

class MovableWindow(QDialog):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowFlags(Qt.FramelessWindowHint) # 隐藏窗口标题栏
        self.dragPos = QPoint(0, 0) # 记录鼠标位置

    def mousePressEvent(self, event):
        self.dragPos = event.globalPos() - self.frameGeometry().topLeft() # 获取鼠标位置

    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.move(event.globalPos() - self.dragPos) # 移动窗口

    def resizeEvent(self, event):
        super().resizeEvent(event)
        self.setMinimumSize(100, 100) # 设置最小尺寸

    def mouseDoubleClickEvent(self, event):
        if self.isMaximized():
            self.showNormal() # 还原窗口
        else:
            self.showMaximized() # 最大化窗口

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = QDialog()
    window.resize(400, 300)
    movable_window = MovableWindow(parent=window)
    movable_window.resize(200, 150)
    movable_window.show()
    window.show()
    sys.exit(app.exec_())

在任意窗口调用MovableWindow实现移动当前窗口,只需要将MovableWindow作为当前窗口的子窗口即可。在上述代码中,我们创建了一个QDialog窗口window,然后将MovableWindow作为其子窗口,再显示两个窗口即可

from PyQt5QtWidgets import QWidgetQApplicationfrom PyQt5QtCore import QtQPointimport sysclass MovableWindowQWidget def __init__self args kwargs super__init__args kwargs selfsetWindowF

原文地址: https://www.cveoy.top/t/topic/ewVk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录