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

文章目录

  • 前言
    • 程序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) 得到传递值

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pandas数据分析之数据绘图

一图胜千言,将信息可视化(绘图)是数据分析中最重要的工作之一。它除了让人们对数据更加直观以外,还可以帮助我们找出异常值、必要的数据转换、得出有关模型的想法等等。pandas 在数据分析、数据可视化方面有着较为广泛的应用。本文…

Python爬虫(十六)_JSON模块与JsonPath

数据提取之JSON与JsonPATH JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是的人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。 JSON和XML的比较可谓不相…

完善区域企业监测预警机制,助推区域产业可持续发展

“五度易链”产业大数据解决方案由产业经济、智慧招商、企业服务、数据服务四大应用解决方案组成,囊括了产业经济监测、产业诊断分析、企业监测预警、企业综合评估、大数据精准招商、招商智能管理、企业管理、企业培育、企业市场服务、企业金融服务、产业数据开放服…

【C++进阶(三)】STL大法--vector迭代器失效深浅拷贝问题剖析

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 vector-下 1. 前言2. 什么是迭代器失效?3. 迭代…

Flink CDC学习笔记

第一章 CDC简介 1.1 什么是CDC ​ CDC (Change Data Capture 变更数据获取)的简称。核心思想就是,检测并获取数据库的变动(增删查改),将这些变更按发生的顺序记录下来,写入到消息中间件以供其它服务进行订…

前端基础---HTML笔记汇总一

HTML定义 HTML超文本标记语言——HyperText Markup Language。 超文本是什么&#xff1f; 链接标记是什么&#xff1f; 标记也叫标签&#xff0c;带尖括号的文本 标签分类 单标签:只有开始标签&#xff0c;没有结束标签(<br>换行 <hr>水平线 <img> 图像标…

Facebook message tag 使用攻略

Messenger 讯息传不出去&#xff1f;无法发送FB 讯息给非好友&#xff1f; 2020年3月&#xff0c;Facebook 为了防止用户被过多的推广或垃圾讯息困扰而更新使用条款&#xff0c;现在商家要用FB传讯息给所有人&#xff08;包括非好友&#xff09;&#xff0c;应该使用 Facebook …

C语言每日一练------Day(5)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;错误的集合 密码检查 &#x1f493;博主csdn个人主页&#xff1a;小小u…

HTTP:http上传文件的原理及java处理方法的介绍

为了说明原理&#xff0c;以下提供一个可以上传多个文件的例子&#xff0c;html页面代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…

字节一面:你能讲一下跨域吗

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;我们日常开发中与后端联调时一定会遇到跨域的问题&#xff0c;只有处理好了跨域才能够与后端交互完成需求&#xff0c;所以深入学习跨域…

SpringMVC-学习笔记

文章目录 1.概述1.1 SpringMVC快速入门 2. 请求2.1 加载控制2.2 请求的映射路径2.3 get和post请求发送2.4 五种请求参数种类2.5 传递JSON数据2.6 日期类型参数传递 3.响应3.1 响应格式 4.REST风格4.1 介绍4.2 RESTful快速入门4.3 简化操作 1.概述 SpringMVC是一个基于Java的Web…

我与GPT的一次关于Orb-SLAM3源码(包括2)的深入对话

目录 一、前言二、关于Orb-SLAM3的代码结构三、关于system3.1 关于摄像头初始化3.2 关于摄像头模型化3.2关于初始化 四、关于ORBVocabulary五、关于优化六、小结 一、前言 Orb-SLAM2或者3是一个开源的视觉SLAM框架&#xff0c;里面的一些思想&#xff0c;一些软件工程的设计理…

Java设计模式-状态模式

1.概述 定义&#xff1a; 对有状态的对象&#xff0c;把复杂的“判断逻辑”提取到不同的状态对象中&#xff0c;允许状态对象在其内部状态发生改变时改变其行为。 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状…

验证go循环删除slice,map的操作和map delete操作不会释放底层内存的问题

目录 切片 for 循环删除切片元素其他循环中删除slice元素的方法方法1方法2&#xff08;推荐&#xff09;方法3 官方提供的方法结论 切片 for 循环删除map元素goalng map delete操作不会释放底层内存go map原理源码CRUD查询新增 操作注意事项map元素是无法取址的map是线程不安全…

亚马逊鲲鹏系统是怎么操作测评的

亚马逊鲲鹏系统可以注册亚马逊买家号、养号、下单留评等&#xff0c;是一款功能比较齐全的测评软件&#xff0c;具体操作如下&#xff1a; 首先我们需要先准备好买家账号&#xff0c;账号可以直接去购买已经注册好了的账号&#xff0c;也可以准备好账号所需要的一些邮箱、ip、…

RealVNC配置自定义分辨率(AlmaLinux 8)

RealVNC 配置自定义分辨率&#xff08;AlmaLinux8&#xff09; 参考RealVNC官网 how to set up resolution https://help.realvnc.com/hc/en-us/articles/360016058212-How-do-I-adjust-the-screen-resolution-of-a-virtual-desktop-under-Linux-#standard-dummy-driver-0-2 …

docker部署nginx,部署springboot项目,并实现访问

一、先部署springboot项目 1、安装docker&#xff1a; yum install docker -y 2、启动docker&#xff1a; service docker start 重启&#xff1a; service docker restart 3、查看版本&#xff1a; docker -v 4、使设置docker.service生效&#xff08;路径&#xff1a;…

国产自主可控C++工业软件可视化图形架构源码

关于国产自主代替的问题是当前热点&#xff0c;尤其是工业软件领域。 “一个功能强大的全自主C跨平台图形可视化架构对开发自主可控工业基础软件至关重要&#xff01;” 作为全球领先的C工业基础图形可视化软件提供商&#xff0c;UCanCode软件有自己的思考&#xff0c;我们认…

uniapp 开发小程序,封装一个方法,让图片使用线上地址

1.在main.js文件中&#xff0c;添加以下代码&#xff1a; 复制使用&#xff1a; // 图片使用网络地址 Vue.prototype.localImgSrc function(img){//项目的地址域名&#xff0c;例如百度return "https://baidu.cn/static/index/images/" img; }2.在页面中直接使用&…

SSM - Springboot - MyBatis-Plus 全栈体系(二)

第一章 Maven 三、Maven 核心功能依赖和构建管理 1. 依赖管理和配置 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程…