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_()
ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ