resizeEvent | เมื่อมีการปรับขนาด widget |
mousePressEvent | เมื่อกดคลิกเมาส์ที่ widget นั้น |
mouseReleaseEvent | เมื่อปล่อยเมาส์จาก widget นั้น |
mouseDoubleClickEvent | เมื่อดับเบิลคลิก widget นั้น |
enterEvent | เมื่อเลื่อนเมาส์เข้าไปใน widget นั้น |
leaveEvent | เมื่อเลื่อนเมาส์ออกจาก widget นั้น |
closeEvent | เมื่อกำลังจะปิด widget นั้น |
keyPressEvent | เมื่อกดคีย์บอร์ด |
mouseMoveEvent | เมื่อเลื่อนเมาส์ขณะที่คลิกค้างอยู่ |
dragEnterEvent | เมื่อคลิกลากเมาส์แล้วเข้ามาใน widget นั้น |
dragLeaveEvent | เมื่อคลิกลากเมาส์แล้วออกไปจาก widget นั้น |
dropEvent | เมื่อวางลากแล้วปล่อยเมาส์ |
changeEvent | เมื่อ widget มีการเปลี่ยนแปลง |
import sys
from PyQt5.QtWidgets import QApplication,QWidget
class Natang(QWidget):
def __init__(self):
super().__init__()
'''
ส่วนประกอบและรายละเอียดต่างๆของ GUI
'''
self.show() # สั่งให้แสดงหน้าต่างที่สร้างขึ้นมา
def เมธอดของ_event_ที่จะเขียนทับ(self,e):
'''
เนื้อหาที่ต้องการให้ทำ
'''
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(350,100) # ขนาดหน้าต่างตอนเริ่่มต้น
self.khokhwam = QLabel('',self) # ข้อความแสดงความเปลี่ยนแปลงของขนาดหน้าต่าง
self.khokhwam.setGeometry(10,10,400,70)
self.khokhwam.setStyleSheet('font-family: Tahoma; font-size: 16px;')
self.show()
def resizeEvent(self,e):
khanatdoem = e.oldSize()
khanatmai = e.size()
self.khokhwam.setText('หน้าต่างถูกเปลี่ยนขนาด\nจาก (%d,%d)\nเป็น (%d,%d)'%(khanatdoem.width(),khanatdoem.height(),khanatmai.width(),khanatmai.height()))
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(250,200)
self.show()
def mousePressEvent(self,e):
print('เมาส์ถูกกดที่ตำแหน่ง (%d,%d)'%(e.pos().x(),e.pos().y()))
def mouseReleaseEvent(self,e):
print('เมาส์ถูกปล่อยที่ตำแหน่ง (%d,%d)'%(e.pos().x(),e.pos().y()))
def mouseDoubleClickEvent(self,e):
print('เมาส์ถูกดับเบิลคลิกที่ตำแหน่ง %s'%e.pos())
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
เมาส์ถูกปล่อยที่ตำแหน่ง (113,57)
เมาส์ถูกดับเบิลคลิกที่ตำแหน่ง PyQt5.QtCore.QPoint(113, 57)
เมาส์ถูกปล่อยที่ตำแหน่ง (113,57)
import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import Qt
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(100,80)
self.show()
def mousePressEvent(self,e):
if(e.button()==Qt.LeftButton):
print('คลิกซ้าย')
if(e.button()==Qt.RightButton):
print('คลิกขวา')
if(e.button()==Qt.MiddleButton):
print('คลิกกลาง')
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(205,60)
self.show()
def enterEvent(self,e): # เมื่อเอาเมาส์วางจะเป็นสีแดง
self.setStyleSheet('background-color: red;')
def leaveEvent(self,e): # เมื่อเอาเมาส์ออกก็เปลี่ยนสีกลับ
self.setStyleSheet('')
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
# สร้างคลาสของปุ่มที่ต้องการ
class Pumkot(QPushButton):
def enterEvent(self,e): # เมื่อเมาส์เข้าปุ่มให้ขยายฟอนต์
self.setStyleSheet('font-size: 50px;')
self.setEnabled(True)
def leaveEvent(self,e=None): # เมื่อเมาส์ออกจากปุ่ม
self.setStyleSheet('font-size: 20px;')
self.setEnabled(False)
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(190,90)
pumkot = Pumkot('กด',self) # สร้างออบเจ็กต์ของคลาสปุ่มที่เราสร้างขึ้นมาเอง
pumkot.setGeometry(10,10,170,70)
pumkot.leaveEvent() # ให้เริ่มต้นมาบังคับให้เกิด leaveEvent ไปเลยทันทีก็ได้
self.show()
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QMessageBox
from PyQt5.QtCore import Qt
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(125,65)
self.setStyleSheet('font-family: Tahoma; font-size: 17px;')
self.show()
def closeEvent(self,e):
lueak = QMessageBox.question(self,'','จะปิดแน่หรือ',QMessageBox.Yes|QMessageBox.No,QMessageBox.No)
if lueak == QMessageBox.Yes:
e.accept() # ถ้ากด yes ก็ accept คือให้ปิดไป
else:
e.ignore() # ถ้ากด no ก็ ignore คือไม่ต้องปิด
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
from PyQt5.QtCore import Qt
class Natang(QWidget):
def __init__(self):
super().__init__()
self.resize(180,130)
self.pum = QPushButton('⊕',self)
self.pum.setGeometry(40,30,60,50)
self.show()
def keyPressEvent(self,e): # เมื่อคีย์บอร์ดถูกกด
x = self.pum.x()
y = self.pum.y()
if(e.key()==Qt.Key_A): # เคลื่อนไปทางซ้าย
self.pum.move(x-10,y)
self.pum.setText('←')
elif(e.key()==Qt.Key_D): # เคลื่อนไปทางขวา
self.pum.move(x+10,y)
self.pum.setText('→')
elif(e.key()==Qt.Key_W): # เคลื่อนไปด้านบน
self.pum.move(x,y-10)
self.pum.setText('↑')
elif(e.key()==Qt.Key_X): # เคลื่อนไปด้านล่าง
self.pum.move(x,y+10)
self.pum.setText('↓')
elif(e.key() in [Qt.Key_Escape,Qt.Key_Q]):
self.close()
if(x!=self.pum.x() or y!=self.pum.y()):
print('จาก (%d,%d) ย้ายไป (%d,%d)'%(x,y,self.pum.x(),self.pum.y()))
def keyReleaseEvent(self,e):
self.pum.setText('⊕')
qAp = QApplication(sys.argv)
natang = Natang()
qAp.exec_()
ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ