700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python多窗口传递信息_PyQT5 中两个界面之间数据传递

python多窗口传递信息_PyQT5 中两个界面之间数据传递

时间:2020-08-24 23:52:03

相关推荐

python多窗口传递信息_PyQT5 中两个界面之间数据传递

在使用PyQT5做GUI桌面应用程序设计时,经常需要对在两个界面之间做信号的传递,这个时候我们需要通过建立信号pyqtSignal 然后通过Connect 相应的槽函数来完成界面之间的数据传递。

1、pyqtSignal

通过pyqtSignal 可以声明不带参数和带参数的实例对象,带参数的实例对象可以声明整形、字符型、列表、字典等数类型,具体如下:

from PyQt5.QtCore import QObject , pyqtSignal

#声明无参数的信号

signal1 = pyqtSignal()

#声明带一个int类型参数的信号

signal2 = pyqtSignal(int)

#声明带int和str类型参数的信号

signal3 = pyqtSignal(int,str)

#声明带一个列表类型参数的信号

signal4 = pyqtSignal(list)

#声明带一个字典类型参数的信号

signal5 = pyqtSignal(dict)

#声明一个多重载版本的信号,包括带int和str类型参数的信号和带str类型参数的信号

signal6 = pyqtSignal([int,str], [str])

对信号携带的数据类型做完相应的实例声明后,通过emit的方式进行信号的发送,但是要根据你声明的信号类型,emit中做相应类型数据的发送

signal1.emit()

signal2.emit(1)

signal3.emit(1,"text")

signal4.emit([1,2,3,4])

signal5.emit({"name":"wangwu","age":"25"})

signal6[int,str].emit(1,"text")

pyqtSignal 实例对象通过connent 对应函数的方式 ,将信号与槽函数做绑定处理

signal1.connetc(signalCall1)

def signalCall1():

pass

具体2个界面之间的信号传递如下:

classForm1():

signal_1= pyqtSignal(str) #主界面的信号用来绑定子界面类的函数方法

def __init__(self, num=10):#创建form2的对象

self.num =num

self.form2= Form2() #实例化子界面类

#将自己的信号和Form2的接受函数绑定

self.signal_1.connect(self.form2.get_data)#通过按键打开from2

self.pushButton.clicked.connect(self.open_form2())def open_form2(self): #传递信号

self.form2.show() #通过pushbutton 展示子界面 如果只是做数据的传递,不打开第二个界面,可以 不调用self.form2.show() 方法

#向form2发送信号,将self.num发了出去

self.signal_1.emit(self.num) #通过自己的信号向子界面传递数据。要想多传递几个值,就在emit(值1,值2) 对应到子界面get_data接受就是2个参数,即get_data(值1,值2)

#将form2的信号_singal_2和主界面的getData_F2连接

self.form2.signal_2.connect(self.getData_F2)defgetData_F2(self,num2):#用于接收Form2发过来的数据

self.num2 = num2 #num2 就是子界面传递过来的数据

class Form2(): #子界面类

signal_2 = pyqtSignal(str) #子界面类创建信号用来绑定主界面类的函数方法

def __init__(self,num2=20):

self.num2=num2defget_data(self,num):#接受Form1传过来的num,保存到自己的变量里面。

self.num =num#子界面通过signal_2 向主界面传递数据

signal_2.emit(self.num2)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。