Python-pyqt不同窗口数据传输【使用静态函数】

文章目录


前言

在编写pyqt 页面时有时候需要不同页面进行数据传输。本文讲解静态函数方法。直接看示例。

程序1:caogao1.py输入数据界面

复制代码
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os #自带
from PyQt5 import QtCore, QtWidgets

class Ui_Dialog11(object):
    def stack11UI(self):
        #第一部分 加载数据集
        self.lb1 = QLabel("输入数据窗口")
        self.lb1.setAlignment(Qt.AlignHCenter)
        self.textEdit1 = QTextEdit("输入数据:")

        layout1= QtWidgets.QHBoxLayout()
        layout1.addWidget(self.lb1)
        layout1.addWidget(self.textEdit1)
        self.stack11.setLayout(layout1)

    @staticmethod  # 静态方法 ,其它窗口调用
    def TransmitResults(self):
        return str(self.textEdit1.toPlainText())

程序2:caogao2.py接收数据界面

复制代码
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os #自带
from PyQt5 import QtCore, QtWidgets
from caogao1 import Ui_Dialog11 #导入caogao1.py中的Ui_Dialog11
class Ui_Dialog12(object):
    def stack12UI(self):
        #第一部分 加载数据集
        self.lb2 = QLabel("接收数据窗口")
        self.lb2.setAlignment(Qt.AlignHCenter)
        self.btn2 = QPushButton("点击接收数据")
        self.btn2.clicked.connect(self.GetResults)
        self.textEdit2 = QTextEdit("接收数据:")


        layout2= QtWidgets.QVBoxLayout()
        layout2.addWidget(self.lb2)
        layout2.addWidget(self.btn2)
        layout2.addWidget(self.textEdit2)
        self.stack12.setLayout(layout2)

    
    def GetResults(self):
        try:
            jieguo=Ui_Dialog11.TransmitResults(self) #调用Ui_Dialog11.TransmitResults 静态方法
            self.textEdit2.setText(str(jieguo)) #写入
        except Exception as e1:
            self.textEdit2.setText(str(e1))  # 写入

程序3 :将输入数据界面和接收数据界面组合成一个总界面

复制代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: yudengwu(余登武)
# @Date  : 2023/8/27
#@email:1344732766@qq.com
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os #自带
from PyQt5 import QtCore, QtWidgets, QtGui
from caogao1 import Ui_Dialog11 #导入
from caogao2 import Ui_Dialog12#导入

class StackedExample(QWidget,Ui_Dialog11,Ui_Dialog12):
    def __init__(self):
        super(StackedExample, self).__init__()
        #设置窗口初始位置和大小
        self.setGeometry(300,50,100,100)
        screen = QDesktopWidget().screenGeometry()  # 屏膜
        self.setMinimumSize(screen.width() * 0.7, screen.height() * 0.7)
        self.setMaximumSize(screen.width() * 0.9, screen.height() * 0.9)

        MAIN_SIZE_MAX = QSize(16777215, 16777215);
        self.setMaximumSize(MAIN_SIZE_MAX);
        self.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint, True)
        #self.setWindowFlags(QtCore.Qt.WindowMinMaxButtonsHint|QtCore.Qt.WindowCloseButtonHint)
        self.setWindowTitle('总页面')

        # 创建列表窗口,添加条目
        self.leftlist = QListWidget()
        self.leftlist.insertItem(0, '输入数据界面')
        self.leftlist.insertItem(1, '接收数据页面')
        # 创建二个小控件
        self.stack11 = QWidget() #stack11 和Ui_Dialog11中保持一致
        self.stack12 = QWidget()#stack12 和Ui_Dialog12中保持一致
        self.stack11UI() #初始化
        self.stack12UI()#初始化
        # 在QStackedWidget对象中填充了二个子控件
        self.stack = QStackedWidget(self)
        self.stack.addWidget(self.stack11)
        self.stack.addWidget(self.stack12)
        # 水平布局,添加部件到布局中
        HBox = QHBoxLayout()
        HBox.addWidget(self.leftlist, 1)
        HBox.addWidget(self.stack, 5)
        self.setLayout(HBox)
        self.leftlist.currentRowChanged.connect(self.display)

    def display(self, i):
        # 设置当前可见的选项卡的索引
        self.stack.setCurrentIndex(i)

if __name__ == '__main__':
    app=QApplication(sys.argv)
    demo=StackedExample()
    demo.show()
    sys.exit(app.exec_())

讲解

输入数据界面

接收数据界面

在输入数据界面 输入值

在接收数据界面 点击接收,可以发现数据从一个界面传到另一个界面了。

总结

1、将函数变成静态函数方法@staticmethod

复制代码
   @staticmethod  # 静态方法 ,其它窗口调用
    def 函数名(self):
        return 结果

2、其它窗口通过静态函数所在类名.静态函数(self) 得到传递值

相关推荐
adaierya几秒前
用 AI 解决音频转换编程问题
开发语言·人工智能·python·分类·ai编程
ai小陈1 分钟前
PyTorch梯度累积与裁剪实战:小显存也能稳定训练大批次
人工智能·pytorch·python·深度学习·ai·gpu算力
心易行者3 分钟前
用HTML在线运行搭后台管理系统:5个核心模块+0服务器,3天跑通完整业务
大数据·前端·网络·人工智能·python
shirsl2 小时前
算法 Day1-数组 / 哈希 + 双指针
python·算法·哈希算法
广州山泉婚姻8 小时前
Python序列号源码分析
python
计算机源码社9 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h9 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python
小柯南敲键盘9 小时前
跨马翻译:AI批量图片翻译工具,跨境电商视频字幕翻译与智能抠图一体搞定
人工智能·python·音视频
2601_9622972510 小时前
Python里behave和pytest-bdd哪个更适合中大型项目?为什么?
python·bdd·行为驱动开发·behave·pytest-bdd
YCOSA202512 小时前
系统工具使用检测.exe (仅供娱乐)
python·microsoft