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

news2024/9/27 21:30:31

文章目录

  • 前言
    • 程序1:caogao1.py输入数据界面
    • 程序2:caogao2.py接收数据界面
  • 程序3 :将输入数据界面和接收数据界面组合成一个总界面
    • 讲解
  • 总结


前言

在编写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) 得到传递值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/934390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《纽约时报》禁止人工智能厂商未经许可抓取其内容

记录纸在吸收一切的人工智能商业模式上戳了洞 8月初,《纽约时报》更新了服务条款(TOS),禁止抓取其用于人工智能训练的文章和图片。报告广告周刊。此举正值科技公司继续利用人工智能语言应用赚钱之际,例如ChatGPT聊天机器人和谷歌诗人该公司通…

嵌入式系统入门实战:探索基本概念和应用领域

嵌入式系统是一种专用的计算机系统,它是为了满足特定任务而设计的。这些系统通常具有较低的硬件资源(如处理器速度、内存容量和存储容量),但具有较高的可靠性和实时性。嵌入式系统广泛应用于各种领域,如家用电器、汽车、工业控制、医疗设备等。 嵌入式系统的基本概念 微控…

AI个体户的崛起:普通人“屁胡”的机会、模式和风险

前几篇文章写的是大模型本身以及垂域中的系统型超级应用(AI Agent类),这些机会很大,不管你是真的做得来大模型,还是能做得了某个行业的系统型超级应用,成功者最终都会是这个时代的成功者。 是什么样子的时…

华为数通方向HCIP-DataCom H12-821题库(单选题:121-140)

第121题 关于OSPF特性描述错误的是 A、OSPF采用链路状态算法。 B、每个路由器通过泛洪 LSA 向外发布本地链路状态信息 C、每台 OSPF 设备都会收集其它路由器发来的LSA 所有的LSA 放在一起便组成了链路状态数据库LSDB, D、OSPF 区域0中所有路由器的 LSDB 都相同…

Spring中@Value注解取值为null问题排查

文章目录 一、背景二、Value 取值为 null 原因分析2.1. Value 取值为 null 常见原因分析常见现象一:类没有交给 Spring 管理,比如类没有加上 Component 等注解常见现象二:手动 new 对象实例,没有从 Spring 容器中获取常见现象三&a…

基于人工电场算法优化的BP神经网络(预测应用) - 附代码

基于人工电场算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于人工电场算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.人工电场优化BP神经网络2.1 BP神经网络参数设置2.2 人工电场算法应用 4.测试结果:5…

Redis.conf详解

Redis.conf详解 配置文件unit单位对大小写不敏感 包含 网络 bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置通用 GENERAL daemonize yes # 以守护进程的方式运行 默认为no pidfile /var/run/redis_6379.pid #如果以后台的方式运行&#xff…

VUE笔记(三)vue的语法

一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据),在元数据的基础上进行逻辑运算后得到的新的数据,计算属性要依赖于源数据,源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选…

【Python】模块、包

模块 Python模块(Module),是一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能保护可执行的代码。 不同模块,同名的功能,如果都被导入,那么后者会覆盖前者…

【LeetCode: 56. 合并区间+贪心+双指针+标识+模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

计算一组数据的高中位数statistics.median_high()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算一组数据的高中位数 statistics.median_high() [太阳]选择题 下列说法错误的是? import statistics print(【执行】statistics.median_high([1, 5, 4, 3, 6, 2])) print(statistic…

cortex-A7中断实验 --- STM32MP157

实验目的 1,实现KEY1/LEY2/KE3三个按键,中断触发打印一句话 2,实现KEY1/LEY2/KE3三个按键按下之后,灯的状态取反 一,异常源和异常模式 1,异常源:异常源引发处理器进入对应的异常模式 2&…

Springboot profile多环境配置

1. 前言 profile用于多环境的激活和配置,用来切换生产,测试,本地等多套不通环境的配置。如果每次去更改配置就非常麻烦,profile就是用来切换多环境配置的。 2. 配置方法 三种方式。 2.1 多profile文件方式 在resource目录下新…

DIL Voterank

这也是一篇对于voterank的改编,属于改进算法,功能是识别复杂网络中的一系列最有影响的点。本篇论文主要在应用在无向,无权值的图。同时对于有向的或者有权值的图,我们可以使用WVoterank,或者Voterank Plus这在之前也实现过了&…

2.Redis 通用命令

Redis 中最核心的两个命令: set 作用:设置 key 对应的 value 值并存储进去。若key已包含一个值,则无论其类型如何,都会覆盖该值。在SET操作成功时,将丢弃与密钥相关联的任何先前生存时间。 对于上述这里的 key和val…

计算机竞赛 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…

代码浏览器和分析器:Source Insight 4.0 Crack

Source Insight 是一个强大的面向项目的编程编辑器、代码浏览器和分析器,可帮助您在工作和计划​​时理解代码。Source Insight 内置了针对 C/C、C#、Java、Objective-C 等的动态分析。 了解代码 快速学习现有代码库,并加快新项目的进度。通过查看函数和…

1688API技术解析,实现获得1688商品详情

要实现获得1688商品详情,你需要使用1688 API。1688 API是阿里巴巴旗下的开放平台,它提供了一套丰富的接口,可以让开发者通过编程的方式获取到1688网站上的商品信息。 首先,你需要在阿里开放平台注册一个账号,并创建一…

R语言绘图相关函数(含实例)

目录 plot:可用于创建多种类型的图形 dev.new():新建画板 hist:绘制直方图 dotchart:绘制点图的函数 pie:绘制饼图 pair:绘制散点图矩阵 boxplot:绘制箱线图 scatterplot3D: 绘制三维散点图 par:修…

【UE5】虚幻5教程-如何解决场景远处植被没有阴影

没有阴影的远处植被 下面是解决的方法。 首先打开项目设置 项目设置 点击左侧的渲染 渲染 在框内输入“距离”,并选择生成距离场。 光源内添加“定向光源”,如果已有可以忽略。 点击“directional light"并在下方找到"距离场阴影&qu…