91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

python qpushbutton的拖放功能如何實現

小樊
90
2024-09-06 14:10:47
欄目: 編程語言

在 PyQt5 中,要實現 QPushButton 的拖放功能,你需要重新實現一些方法,如 mousePressEvent、mouseMoveEvent 和 dropEvent。以下是一個簡單的例子:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag

class DragButton(QPushButton):
    def __init__(self, title, parent):
        super().__init__(title, parent)

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.dragStartPosition = event.pos()

        super().mousePressEvent(event)

    def mouseMoveEvent(self, event):
        if not (event.buttons() & Qt.LeftButton):
            return

        if ((event.pos() - self.dragStartPosition).manhattanLength()
                < QApplication.startDragDistance()):
            return

        drag = QDrag(self)
        mimeData = QMimeData()
        mimeData.setText(self.text())
        drag.setMimeData(mimeData)
        drag.exec_(Qt.MoveAction)

    def dropEvent(self, event):
        position = event.pos()
        self.move(position)
        event.accept()

class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setAcceptDrops(True)
        self.button = DragButton('拖動我', self)
        self.button.move(100, 65)

        self.setWindowTitle('QPushButton 拖放示例')
        self.setGeometry(300, 300, 600, 400)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = AppDemo()
    demo.show()
    sys.exit(app.exec_())

這個例子中,我們創建了一個名為 DragButton 的自定義按鈕類,它繼承自 QPushButton。然后我們重寫了 mousePressEvent、mouseMoveEvent 和 dropEvent 方法,以實現拖放功能。

當你運行這個程序時,你會看到一個包含一個可拖動按鈕的窗口。你可以點擊并拖動這個按鈕,將其移動到窗口中的任意位置。

0
额济纳旗| 石泉县| 襄樊市| 西林县| 井冈山市| 苍南县| 海口市| 兴化市| 且末县| 林口县| 海伦市| 缙云县| 东丰县| 中山市| 隆子县| 教育| 平和县| 邓州市| 龙山县| 乐都县| 河北区| 新津县| 木里| 泰来县| 沙洋县| 江西省| 靖远县| 沧源| 台中市| 平顶山市| 榆树市| 沽源县| 佛坪县| 霍林郭勒市| 久治县| 云林县| 张家界市| 垦利县| 大关县| 铅山县| 马尔康县|