我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
自定义信号
# 通过pyqtSignal函数定义一个信号
signal_name = pyqtSignal(类型1, 类型2...)
# 重载版本
signal_name = pyqtSignal([int], [str])
signal_name.emit(参数1,参数2...)
from PyQt5.Qt import *
class MyBtn1(QPushButton):
name = 'FengZi' # 类属性
class MyBtn2(QPushButton):
def func(self):
age = 36 # 实例属性(对象属性)
print(age)
from PyQt5.Qt import *
import sys
class MyBtn(QPushButton):
# 通过pyqtSignal方法定义一个信号rightClicked
rightClicked = pyqtSignal()
# 重写鼠标点击事件机制
def mousePressEvent(self, evt) -> None:
# 执行父类的鼠标点击事件机制,以免覆盖掉父类本身与鼠标点击相关的信号与槽机制
super(MyBtn, self).mousePressEvent(evt)
# evt.button() # 通过事件对象获取到被按下的按钮
# 判断事件对象被按下的按钮是否是右键
if evt.button() == Qt.RightButton:
# print('此时需要发射右键点击信号')
# 发射信号
self.rightClicked.emit()
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('自定义信号学习')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
btn = MyBtn('测试按钮', self)
btn.resize(100, 50)
btn.move(100, 100)
btn.rightClicked.connect(self.btn_rightclick)
btn.clicked.connect(self.btn_click)
def btn_rightclick(self):
print('鼠标【右键】按下了按钮')
def btn_click(self):
print('鼠标【左键】按下了按钮')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
class MyBtn(QPushButton):
# 通过pyqtSignal方法定义一个信号rightClicked
rightClicked = pyqtSignal()
# 重写鼠标点击事件机制
def mousePressEvent(self, evt) -> None:
# 执行父类的鼠标点击事件机制,以免覆盖掉父类本身与鼠标点击相关的信号与槽机制
super(MyBtn, self).mousePressEvent(evt)
# evt.button() # 通过事件对象获取到被按下的按钮
# 判断事件对象被按下的按钮是否是右键
if evt.button() == Qt.RightButton:
# print('此时需要发射右键点击信号')
# 发射信号
self.rightClicked.emit()
from PyQt5.Qt import *
import sys
from test_rightclick import Ui_Form
class Windows(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setWindowTitle('右键按钮ui加载测试')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
self.setupUi(self)
def btn_click(self):
print('鼠标右键按下了按钮')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
from test_rightclick import Ui_Form
class Windows(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setWindowTitle('右键按钮ui加载测试')
self.resize(500, 300)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
self.setupUi(self)
self.pushButton.rightClicked.connect(self.btn_click)
def btn_click(self):
print('鼠标右键按下了按钮')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())