网站页面描述怎么写,做国外销售都上什么网站,安徽住房与城乡建设厅网站,做网站有好创意想法在上一篇文章中python之pyqt专栏6-信号与槽2-CSDN博客中#xff0c;我们可以了解到对象可以使用内置信号#xff0c;这些信号来自于类定义或者继承过来的。我们可以对这些信号可以通过connect连接槽函数。
需求 现在有一个需求#xff0c;有两个UI界面“untitled.ui”和“u… 在上一篇文章中python之pyqt专栏6-信号与槽2-CSDN博客中我们可以了解到对象可以使用内置信号这些信号来自于类定义或者继承过来的。我们可以对这些信号可以通过connect连接槽函数。
需求 现在有一个需求有两个UI界面“untitled.ui”和“untitled1.ui”untitled.ui有一个lineEdit行编辑和一个button按钮untitled1.ui有一个Label。点击untitled.ui的button时将行编辑的文本内容设置为untitled1.ui的Label文本内容。
untitled.ui的对象列表
对象名类型lineEditLlineEditpushButtonQPushButto
untitled1.ui的对象列表
对象名类型labelQLabel UI界面设置
untitled.ui UI界面 保存文件为untitled.ui
untitled1.ui UI界面 点击左上角“文件”-“新建” 保存文件为untitled.ui 注Qt Designer中当有两个以上的UI编辑界面时需要先选中的UI界面再保存 项目目录下“untitled.ui”和“untitled1.ui”转换为“untitled.py”和“untitled1.py” main.py
# 导入sys模块
import sys
# PyQt6.QtWidgets模块中导入QApplication, QWidget
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtCore import QObjectimport untitled
import untitled1class MyMainForm(QWidget, untitled.Ui_Form):sendText pyqtSignal(str)def __init__(self, parentNone):# 调用父类的构造函数super(MyMainForm, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.pushButton.clicked.connect(self.btn_clicked)class MyMainForm1(QWidget, untitled1.Ui_Form):def __init__(self, parentNone):# 调用父类的构造函数super(MyMainForm1, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.move(1200,320)# Press the green button in the gutter to run the script.
if __name__ __main__:# 实例化应用app QApplication(sys.argv)# 实例化MyMainFormmyw MyMainForm()myw.show()myw1 MyMainForm1()myw1.show()myw.sendText.connect(myw1.deal_signal)# 启动应用程序的事件循环并等待用户交互直到应用程序关闭。sys.exit(app.exec())防止两个窗口重叠在MyMainForm1移动一下位置
self.move(1200,320) 有两个窗口建立了两个类MyMainForm与MyMainForm1它们分别继承于untitled.Ui_Form与untitled1.Ui_Form 需要注意的是untitled.py与untitled1.py都有Ui_Form为了区分Ui_Form来源不能用如下代码否者会被Ui_Form会被后面的取代
from untitled import Ui_Form
from untitled1 import Ui_Form 正确书写应该是这样
import untitled
import untitled1
class MyMainForm(QWidget, untitled.Ui_Form):
class MyMainForm1(QWidget, untitled1.Ui_Form): 问题 在MyMainFormbutton被点击时会发出clicked信号如果用将button的clicked信号绑定槽函数在这个槽函数里面可以实现获取lineEdit的文本内容代码如下
self.pushButton.clicked.connect(self.btn_clicked) def btn_clicked(self):# 获取行编辑文本str self.lineEdit.text() MyMainForm与MyMainForm1它们是两个类没有直接关系这个槽函数在MyMainForm中不能修改MyMainForm1的label也就是不能通过如下代码 def btn_clicked(self):# 获取行编辑文本str self.lineEdit.text()self.label.setText(str) 自定义信号 如果我们可以在untitled.py的Ui_Form自定义一个信号(sendText)这个信号通过connect绑定untitled1.py的Ui_Form类函数(deal_signal)那么它们就会建立关系。 myw.sendText.connect(myw1.deal_signal)
修改代码如下 # 导入sys模块
import sys
# PyQt6.QtWidgets模块中导入QApplication, QWidget
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtCore import QObject, pyqtSignalimport untitled
import untitled1class MyMainForm(QWidget, untitled.Ui_Form):sendText pyqtSignal(str)def __init__(self, parentNone):# 调用父类的构造函数super(MyMainForm, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.pushButton.clicked.connect(self.btn_clicked)def btn_clicked(self):# 获取行编辑文本labelStr self.lineEdit.text()self.sendText.emit(labelStr)class MyMainForm1(QWidget, untitled1.Ui_Form):def __init__(self, parentNone):# 调用父类的构造函数super(MyMainForm1, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.move(1200,320)def deal_signal(self,labelStr):self.label.setText(labelStr)# Press the green button in the gutter to run the script.
if __name__ __main__:# 实例化应用app QApplication(sys.argv)# 实例化MyMainFormmyw MyMainForm()myw.show()myw1 MyMainForm1()myw1.show()myw.sendText.connect(myw1.deal_signal)# 启动应用程序的事件循环并等待用户交互直到应用程序关闭。sys.exit(app.exec())自定义信号过程 1导入 pyqtSignal类
from PyQt6.QtCore import pyqtSignal 2定义类中信号属性“str”是数据类型
sendText pyqtSignal(str) 3信号与槽绑定
myw.sendText.connect(myw1.deal_signal) 4发送信号发送的 self.sendText.emit(labelStr) 在该项目功能需求中需要获取MyMainForm的lineEdit的内容将其内容传递传递给MyMainForm1的deal_signal并在deal_signal对MyMainForm1的文本设置需要填写数类型“str”如果自定义信号不需要传递内容则不需要数据类型如下代码即可
sendText pyqtSignal()
最终实现