单主机双屏幕实现跨屏幕信息交互的GUI程序

news2024/9/25 17:20:32

单主机双屏幕实现跨屏幕信息交互的GUI程序

运行程序界面

在这里插入图片描述

屏幕1发送数据,屏幕2接收数据

在这里插入图片描述

在屏幕1按下打开开关,屏幕2播放视频

在这里插入图片描述

代码程序

import tkinter as tk # 导入tkinter模块,用于创建GUI界面
import threading # 导入threading模块,用于创建多线程
import pygetwindow as gw # 导入pygetwindow模块,用于获取窗口信息
import subprocess # 导入subprocess模块,用于执行系统命令
import cv2 # 导入cv2模块,用于视频处理

class Window1:
    def __init__(self):
        self.root = tk.Tk() # 创建一个窗口
        self.root.geometry('200x100+0+0') # 设置窗口大小和位置
        self.root.title('Window 1') # 设置窗口标题

        # 创建一个文本框和按钮用于输入文字
        self.entry = tk.Entry(self.root) # 创建一个文本框
        self.entry.pack() # 显示文本框
        self.button = tk.Button(self.root, text="发送", command=self.send_text) # 创建一个按钮
        self.button.pack() # 显示按钮

        # 绑定回车键事件
        self.entry.bind('<Return>', self.send_text)

        # 添加控制开关的按钮
        self.switch_button = tk.Button(self.root, text="打开开关", command=self.open_switch)
        self.switch_button.pack()

    def send_text(self, event=None):
        text = self.entry.get() # 获取文本框中的文字
        # 在窗口2中显示输入的文字
        global text_label # 声明为全局变量
        text_label.config(text=text) # 修改标签内容
        # 清空文本框内容
        self.entry.delete(0, tk.END)

    def open_switch(self):
        # 打开视频
        try:
            video_path = "C:/Users/Fengzhen/Videos/全向步态视频/侧向步态.mp4" # 视频文件路径
            threading.Thread(target=open_video, args=(video_path,)).start() # 创建一个线程并启动

            window = gw.getWindowsWithTitle("Video")[0]  # 获取窗口信息,替换为实际窗口标题
            # # 设置窗口位置
            # window.moveTo(2000, 100)
        except Exception as e: # 捕获异常
            print(e)

        # 在窗口2中显示开关状态
        global switch_label # 声明为全局变量
        switch_label.config(text="开关已打开") # 修改标签内容

class Window2:
    def __init__(self):
        self.root = tk.Tk() # 创建一个窗口
        self.root.geometry('200x100+2000+0') # 设置窗口大小和位置
        self.root.title('Window 2') # 设置窗口标题

        # 创建一个标签用于显示文字
        global text_label # 声明为全局变量
        text_label = tk.Label(self.root, text="")
        text_label.pack()

        # # 创建一个标签用于显示开关状态
        # global switch_label
        # switch_label = tk.Label(self.root, text="开关已关闭")
        # switch_label.pack()

def open_video(file_path):
    try:
        # 使用cv2读取视频
        cap = cv2.VideoCapture(file_path)

        # 创建窗口并设置位置
        cv2.namedWindow("Video", cv2.WINDOW_NORMAL)
        cv2.moveWindow("Video", 3000, 100)

        while True:
            ret, frame = cap.read() # 读取视频帧
            if not ret: # 如果没有读取到帧,则退出循环
                break

            # 在指定位置显示视频帧
            cv2.imshow("Video", frame)

            if cv2.waitKey(1) & 0xFF == ord('q'): # 按下"q"键退出循环
                break

        cap.release() # 释放视频资源
        cv2.destroyAllWindows() # 关闭所有窗口

    except Exception as e: # 捕获异常
        print(e)

def create_windows():
    window1 = Window1() # 创建窗口1
    window2 = Window2() # 创建窗口2
    window1.root.mainloop() # 进入消息循环
    window2.root.mainloop()

# 创建一个线程用于创建窗口
thread = threading.Thread(target=create_windows)

# 启动线程
thread.start()

# 等待线程结束
thread.join()

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

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

相关文章

智能雾化壁炉设计,新时代科技与美学的完美结合

智能雾化壁炉设计&#xff0c;新时代科技与美学的完美结合 随着科技的不断创新&#xff0c;智能雾化壁炉设计成为家居设计领域的一颗耀眼明珠。它的出现不仅改变了传统壁炉的概念&#xff0c;更为我们带来了全新的视觉和感官体验。下面让我们一起探索智能雾化壁炉设计的优势和特…

企业网盘:实现数据跨境传输,助力企业出海的必备工具

今年是“一带一路”十周年。在这十年间&#xff0c;中国和“一带一路”共建国家携手并行&#xff0c;贸易持续增长发展。在如今经济全球化的大方向下&#xff0c;跨国经济合作将会是各国共识。 目前&#xff0c;中外合作企业、跨境企业已成为国际贸易发展趋势。不过&#x…

腾讯滑块(1-13,js逆向)

前言&#xff1a;之前打算写的猿人学比赛题系列因为种种原因耽搁了&#xff0c;主要还是比完赛之后热情就少了很多&#xff0c;看到评论区有人说做了这么久才做出一题&#xff0c;这里需要狡辩一下&#xff0c;我虽然菜但是还没到那种地步&#xff0c;比赛两天时间里我跟队友是…

mac快捷创建文件的方法

mac快捷创建文件的方法 在macbook的使用中&#xff0c;当我们在桌面或访达等地方使用右键时&#xff0c;可以看到新建文件夹的选项&#xff0c;却怎么也找不到创建文件的选项。这种情况有时候会带来不便。这篇文章给大家带来一个非常简单解决这个问题。 下载 在App Store中搜索…

FPGA的MARK_DEBUG调试之波形抓取

一、描述 在工作时发现FPGA向ARM传输的数据有问题&#xff0c;因此想抓取一下FPGA的波形。作为传统方式使用示波器抓取过于麻烦&#xff0c;因此使用VIVADO自带的DEBUG功能抓取输出的数据波形。 先上几个比较好的学习链接&#xff1a; https://www.cnblogs.com/tubujia/p/924…

制造领域 基础概念快速入门介绍

1、基本背景知识 本定义结合国家标准文件有所发挥&#xff0c;仅供参考。 产品&#xff1a;是生产企业向用户或市场以商品形式提供的制成品&#xff1b; 成套设备&#xff1a;在生产企业一般不用装配工序连接&#xff0c;但用于完成相互联系的使用功能的两个或两个以上的产…

支持向量机(公式推导+举例应用)

文章目录 引言间隔与支持向量机对偶问题&#xff08;拉格朗日乘子法&#xff09;SMO算法核函数软间隔与正则化软间隔正则化&#xff08;罚函数法&#xff09; 模型的稀疏性结论实验分析 引言 在机器学习领域&#xff0c;支持向量机&#xff08;Support Vector Machine&#xf…

网络——华为与华三

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 大家好&#xff0c;我是网络豆&#xff0…

Go语言认识

Go语言认识 1. Go语言的设计背景2. Go语言的历程3. Go语言对比分析4. Go语言未来的发展规划5. 要不要选择Go 关注 go博客 直接了解第一手资料。 go文档 了解go的全貌。 1. Go语言的设计背景 Go语言&#xff08;也称为Golang&#xff09;是由Google开发的一种编程语言。它的设计…

中国电子学会2020年6月份青少年软件编程Scratch图形化等级考试试卷一级真题(含答案)

1.以下哪段程序可以实现小猫向左移动? A. B. C. D. 2.小猫给公园设计了如下的平面图&#xff0c;它想把黑色的路变成棕色&#xff0c;请问需要点击几次油漆桶按钮? A.3 B9 C.1 D.10 3.默认的小猫有两个造型(分别为造型1和造型2)。在运行下面的程序后&#xff0c;没有看到…

【信号与系统】【北京航空航天大学】实验一、信号的MATLAB表示及信号运算

一、实验目的 1、初步掌握 MATLAB 仿真软件的使用&#xff1b; 2、学习使用 MATLAB 产生基本时域信号&#xff0c;并绘制信号波形&#xff1b; 3、学习利用 MATLAB 实现信号的基本运算&#xff1b; 4、利用 MATLAB 分析常用的连续时域信号。 二、实验内容 1、 生成连续信号 …

什么是设备管理系统?设备管理系统解决方案有何优势?

随着企业规模的不断扩大以及设备功能增加以及复杂性&#xff0c;对设备的管理提出新的挑战。由此各设备管理系统随即涌入市场。设备管理系统是对设备的运行情况、维修情况等进行记录并快速维修&#xff0c;达到提高设备维修效率&#xff0c;优化设备生命周期的综合性解决方案系…

【idea】idea插件编写教程,博主原创idea插件 欢迎下载

前言&#xff1a;经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参&#xff0c; 例如日常开发中 我们使用Objects.equals去比较 status(入参)&#xff0c;statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() &#xff0c;再比…

Flask 小程序菜品搜索

mina/pages/food/index.wxml <!--index.wxml--> <!--1px 750/320 2.34rpx;--> <view class"container"><!--轮播图--><view class"swiper-container"><swiper class"swiper_box" autoplay"{{autoplay}…

品牌帮助中心:提升企业客户服务水平与效率的实用指南

什么是品牌帮助中心&#xff1f;简单来理解&#xff0c;他就是一种加速问题解决效率的方式&#xff0c;是通过在官网设置文章库或者社区的形式&#xff0c;为客户提供自助服务&#xff0c;自我查找问题答案。是一种既能提升问题解决效率&#xff0c;又能提升品牌形象的方式。接…

【LeetCode】203. 移除链表元素(简单)——代码随想录算法训练营Day03

题目链接&#xff1a;203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff…

蓝牙音视频远程控制协议(AVRCP) AV/C command格式介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

09-Python服务链路追踪案例

skyWalking Python agent requires SkyWalking 8.0 and Python 3.7 # 将django包导入 ~$ cd /apps ~$ tar xf django-test.tgz ~$ cd django-test# 安装模块 ~$ apt install python3-pip ~$ pip3 install -r requirements.txt# 创建django项目mysite ~$ django-admin startpro…

Vue:将以往的JQ页面,重构成Vue组件页面的大致思路梳理(组件化编码大致流程)

一、实现静态组件 组件要按照功能点拆分&#xff0c;命名不要与HTML元素冲突。 1、根据UI提供的原型图&#xff0c;进行结构拆分&#xff0c;拆分的粒度以是否方便给组件起名字为依据。并梳理好对应组件的层级依赖关系。 2、拆分好结构后&#xff0c;开始对应的写组件&#x…

案例118:基于微信小程序的电影院订票选座系统设计及实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…