pyqt5界面与逻辑分离--信号槽的装饰器实现方式

举报
风吹稻花香 发表于 2021/06/05 00:28:05 2021/06/05
【摘要】 pyqt5界面与逻辑分离--信号槽的装饰器实现方式  本文展示了 pyqt5 信号槽的装饰器实现方式(借鉴自 eirc6)   一个简单的例子。实现功能:两个数相加,显示结果。如图   两个文件,第一个是界面文件 ui_calc.py # ui_calc.py from PyQt5 import QtCor...


pyqt5界面与逻辑分离--信号槽的装饰器实现方式

 本文展示了 pyqt5 信号槽的装饰器实现方式(借鉴自 eirc6)

 

一个简单的例子。实现功能:两个数相加,显示结果。如图

 

两个文件,第一个是界面文件 ui_calc.py

复制代码
# ui_calc.py

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Calc(object): def setupUi(self, Form): self.inputSpinBox1 = QtWidgets.QSpinBox(Form) self.inputSpinBox1.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox1.setObjectName("inputSpinBox1") # 必须
 self.inputSpinBox2 = QtWidgets.QSpinBox(Form) self.inputSpinBox2.setGeometry(QtCore.QRect(70, 26, 46, 25)) self.inputSpinBox2.setObjectName("inputSpinBox2") # 必须
 self.outputWidget = QtWidgets.QLabel(Form) self.outputWidget.setGeometry(QtCore.QRect(140, 24, 36, 27)) self.outputWidget.setObjectName("outputWidget") # 必须
 QtCore.QMetaObject.connectSlotsByName(Form) # 必须
复制代码

说明:1. 界面部件需要setObjectname ;  2. 最后必须 QtCore.QMetaObject.connectSlotsByName(Form)

 

 

第二个是逻辑文件 calc.py

复制代码
# calc.py

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QWidget

from ui_calc import Ui_Calc
# 方式一
class MyCalc(QWidget): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_Calc() self.ui.setupUi(self) @pyqtSlot(int) def on_inputSpinBox1_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value()))
 @pyqtSlot(int) def on_inputSpinBox2_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value()))
# 方式二
class MyCalc2(QWidget, Ui_Calc): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) @pyqtSlot(int) def on_inputSpinBox1_valueChanged(self, value): self.outputWidget.setText(str(value + self.inputSpinBox2.value()))
 @pyqtSlot(int) def on_inputSpinBox2_valueChanged(self, value): self.outputWidget.setText(str(value + self.inputSpinBox1.value()))
if __name__ == '__main__': import sys app = QApplication(sys.argv) win = MyCalc()
  # win = MyCalc2() win.show() sys.exit(app.exec_())

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/78763142

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。