pyqt5 窗口拖拽
时间: 2023-08-24 18:10:33 浏览: 107
您可以通过继承QWidget类并重写mousePressEvent、mouseMoveEvent和mouseReleaseEvent方法来实现PyQt5窗口的拖拽功能。以下是一个简单的示例代码:
```python
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget
class DraggableWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.FramelessWindowHint) # 设置无边框窗口
self.draggable = False
self.offset = None
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.draggable = True
self.offset = event.pos()
def mouseMoveEvent(self, event):
if self.draggable:
self.move(event.globalPos() - self.offset)
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.draggable = False
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DraggableWindow()
window.setGeometry(100, 100, 300, 200)
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个可拖拽的窗口类`DraggableWindow`,继承自QWidget。在`mousePressEvent`方法中,我们捕获鼠标左键按下事件并记录当前鼠标位置。在`mouseMoveEvent`方法中,如果窗口处于可拖拽状态,我们通过计算鼠标位置的偏移量来移动窗口。在`mouseReleaseEvent`方法中,我们捕获鼠标左键释放事件并将可拖拽状态设置为False。
使用`setWindowFlags(Qt.FramelessWindowHint)`可以设置窗口为无边框窗口,这样拖拽时就不会出现边框。
您可以将上述代码保存为一个.py文件并运行,即可获得一个具有拖拽功能的窗口。希望对您有所帮助!如果还有其他问题,请随时提问。
阅读全文