51 lines
985 B
Python
51 lines
985 B
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
'''
|
||
|
【簡介】
|
||
|
PyQt5中Drag and Drop範例
|
||
|
|
||
|
|
||
|
'''
|
||
|
|
||
|
import sys
|
||
|
from PyQt5.QtCore import *
|
||
|
from PyQt5.QtGui import *
|
||
|
from PyQt5.QtWidgets import *
|
||
|
|
||
|
class Combo(QComboBox):
|
||
|
|
||
|
def __init__(self, title, parent):
|
||
|
super(Combo, self).__init__( parent)
|
||
|
self.setAcceptDrops(True)
|
||
|
|
||
|
def dragEnterEvent(self, e):
|
||
|
print( e)
|
||
|
if e.mimeData().hasText():
|
||
|
e.accept()
|
||
|
else:
|
||
|
e.ignore()
|
||
|
|
||
|
def dropEvent(self, e):
|
||
|
self.addItem(e.mimeData().text())
|
||
|
|
||
|
class Example(QWidget):
|
||
|
def __init__(self):
|
||
|
super(Example, self).__init__()
|
||
|
self.initUI()
|
||
|
|
||
|
def initUI(self):
|
||
|
lo = QFormLayout()
|
||
|
lo.addRow(QLabel("請把左邊的文字拖曳到右邊的下拉式清單中"))
|
||
|
edit = QLineEdit()
|
||
|
edit.setDragEnabled(True)
|
||
|
com = Combo("Button", self)
|
||
|
lo.addRow(edit,com)
|
||
|
self.setLayout(lo)
|
||
|
self.setWindowTitle('簡單的拖曳範例')
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app = QApplication(sys.argv)
|
||
|
ex = Example()
|
||
|
ex.show()
|
||
|
sys.exit(app.exec_())
|