pyqt5无边框实现移动
时间: 2023-10-30 08:55:35 浏览: 164
PyQt5在FramelessWindowHint模式下实现窗口移动与缩放
5星 · 资源好评率100%
要在PyQt5中实现无边框窗口的移动,你可以使用以下代码:
```
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt
class CustomWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint)
# 设置窗口无边框
self.draggable = True
# 设置窗口可拖动
self.offset = None
# 用于存储鼠标点击位置与窗口位置的偏移值
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton and self.draggable:
self.offset = event.pos()
def mouseMoveEvent(self, event):
if self.offset is not None and self.draggable:
self.move(event.globalPos() - self.offset)
event.accept()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton and self.draggable:
self.offset = None
if __name__ == "__main__":
app = QApplication([])
window = CustomWindow()
window.show()
app.exec_()
```
这里我们创建了一个自定义的窗口类`CustomWindow`,继承自`QWidget`,并设置了窗口的标志为`Qt.FramelessWindowHint`实现无边框窗口。同时,我们设置了窗口可拖动的属性`draggable`为True,并在鼠标按下、移动和释放事件中实现了窗口的拖动功能。
你可以将上述代码保存在一个Python文件中,并运行它来查看无边框窗口的移动效果。
阅读全文