import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setAcceptDrops(True) # ตั้งให้สามารถลากอะไรเข้ามาได้
        self.khokhwam = QLabel('',self) # QLabel ที่จะใช้แสดงข้อความที่ถูกลากเข้ามา
        self.khokhwam.setGeometry(10,10,200,150)
        self.khokhwam.setStyleSheet('font-family: Courier New; font-size: 18px;')
        self.show()
    def dragEnterEvent(self,e):
        text = e.mimeData().text() # เอาข้อความจาก mimedata ที่ถูกลากเข้ามา
        self.khokhwam.setText(text) # นำข้อความนั้นมาใส่ให้ QLabel ภายในหน้าต่าง
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QVBoxLayout
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('font-family: Courier New; font-size: 18px;')
        self.setAcceptDrops(True) # ตั้งให้ลากอะไรเข้ามาได้
        self.vbl = QVBoxLayout() # โครงสำหรับวางข้อความที่ใส่เข้ามา
        self.setLayout(self.vbl)
        self.show()
    def dragEnterEvent(self,e):
        e.accept() # เมื่อลากอะไรเข้ามาก็ให้รับไว้
    def dropEvent(self,e): # เมื่อปล่อยเมาส์หลังจากลากเข้ามา
        label = QLabel(e.mimeData().text()) # สร้าง QLabel ที่ใส่ข้อความที่ลากเข้ามา
        self.vbl.addWidget(label) # ใส่ลงในโครง
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel
from PyQt5.QtCore import Qt
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('font-family: Tahoma; color: #649; font-size: 17px;')
        self.setAcceptDrops(True)
        self.resize(400,300)
        self.show()
    def dragEnterEvent(self,e):
        e.accept()
    def dropEvent(self,e):
        self.label = QLabel(e.mimeData().text(),self) # สร้าง QLabel ใหม่ขึ้นมาสำหรับใส่ข้อความที่ลากเข้ามา
        self.label.resize(800,600)
        self.label.setAlignment(Qt.AlignCenter) # ตั้งให้ข้อความจัดอยู่ตรงกลาง
        pos = e.pos()
        self.label.move(pos.x()-400,pos.y()-300) # เลื่อนข้อความไปวางในตำแหน่งที่ปล่อยเมาส์
        self.label.show()
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  

import sys,os
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QGridLayout
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setStyleSheet('QLabel{background-color: #dfd; font-family: Tahoma; font-size: 19px; border: 1px solid #411;}')
        self.setAcceptDrops(True)
        self.gbl = QGridLayout() # ใช้โครงแบบตาราง
        self.setLayout(self.gbl)
        self.gbl.addWidget(QLabel('ชื่อไฟล์'),0,0)
        self.gbl.addWidget(QLabel('จำนวนอักษร'),0,1)
        self.gbl.addWidget(QLabel('จำนวนบรรทัด'),0,2)
        self.n_file = 0 # จำนวนไฟล์ที่มีอยู่
        self.show()
    def dragEnterEvent(self,e):
        mida = e.mimeData()
        if(mida.hasUrls()): # ให้รับเฉพาะกรณีที่มีข้อมูล url เท่านั้น
            e.accept()
    def dropEvent(self,e):
        mida = e.mimeData()
        for url in mida.urls():
            self.n_file += 1
            url = url.toLocalFile() # เอาสายอักขระชื่อและพาธไฟล์
            print(url)
            chuefile = os.path.basename(url)
            label = QLabel(chuefile)
            self.gbl.addWidget(label,self.n_file,0) # ชื่อไฟล์
            with open(url,encoding='utf-8') as f: # เปิดไฟล์ขึ้นมา
                nueaha = f.read() # อ่านข้อความในไฟล์
            self.gbl.addWidget(QLabel('%d'%(len(nueaha))),self.n_file,1) # จำนวนอักษร
            self.gbl.addWidget(QLabel('%d'%(len(nueaha.split('\n')))),self.n_file,2) # จำนวนบรรทัด
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QVBoxLayout
from PyQt5.QtGui import QPixmap
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setAcceptDrops(True)
        self.vbl = QVBoxLayout()
        self.setLayout(self.vbl)
        self.show()
    def dragEnterEvent(self,e):
        mida = e.mimeData()
        if(mida.hasImage()): # ตรวจสอบว่ามีข้อมูลภาพ จึงจะรับ
            e.accept()
    def dropEvent(self,e):
        mida = e.mimeData()
        label = QLabel() # สร้าง QLabel ที่จะใช้ใส่วางรูปภาพ
        self.vbl.addWidget(label)
        pix = QPixmap(mida.imageData()) # นำข้อมูลรูปภาพที่ลากเข้ามาสร้างเป็น QPixmap
        label.setPixmap(pix) # ใส่รูปภาพลงใน QLabel ที่เตรียมไว้
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  


| ความหมาย | ดูค่า | ตรวจดูว่ามีหรือไม่ | ตั้งค่า | 
|---|---|---|---|
| ข้อความทั่วไป | .text() | .hasText() | .setText() | 
| ข้อความ html | .html() | .hasHtml() | .setHtml() | 
| ข้อความพวก url หรือที่อยู่ไฟล์ | .urls() | .hasUrls() | .setUrls() | 
| รูปภาพ | .imageData() | .hasImage() | .setImageData() | 
| สี | .colorData() | .hasColor() | .setColorData() | 
import sys
from PyQt5.QtWidgets import QApplication,QWidget
class Natang(QWidget):
    def __init__(self):
        super().__init__()
        self.setAcceptDrops(True)
        self.show()
    def dragEnterEvent(self,e):
        mida = e.mimeData()
        if(mida.hasText):
            print('มีข้อความ')
        if(mida.hasHtml):
            print('มี html')
        if(mida.hasUrl):
            print('มี url')
        if(mida.hasImage):
            print('มีรูปภาพ')
        if(mida.hasColor):
            print('มีสี')
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
  ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ