Python,pyqt5,拖拽生成新的按钮并可以用编辑框对新生成的按钮实时编辑位置
时间: 2023-04-09 08:04:25 浏览: 88
Python+PyQt5基础实用漂亮界面(无边框,圆角,可拖拽)
5星 · 资源好评率100%
可以使用pyqt5中的QDrag和QDropEvent实现拖拽生成新的按钮,并且可以使用QLineEdit对新生成的按钮实时编辑位置。以下是示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit
from PyQt5.QtGui import QDrag
from PyQt5.QtCore import Qt, QMimeData
class Button(QWidget):
def __init__(self, text, parent):
super().__init__(parent)
self.button = QPushButton(text, self)
self.button.move(0, 0)
self.button.show()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.drag_start_position = event.pos()
def mouseMoveEvent(self, event):
if not (event.buttons() & Qt.LeftButton):
return
if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance():
return
drag = QDrag(self)
mime_data = QMimeData()
mime_data.setText(self.button.text())
drag.setMimeData(mime_data)
drag.exec_(Qt.MoveAction)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Button Drag and Drop')
self.button = QPushButton('Add Button', self)
self.button.move(20, 20)
self.button.clicked.connect(self.add_button)
self.line_edit = QLineEdit(self)
self.line_edit.move(20, 60)
self.show()
def add_button(self):
button = Button(self.line_edit.text(), self)
button.move(100, 100)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
```
这段代码实现了一个窗口,其中有一个“Add Button”按钮,点击该按钮可以在窗口中生成一个新的按钮,新的按钮可以通过拖拽移动位置,并且可以使用QLineEdit对其位置进行实时编辑。
阅读全文