【K12】运用tk控件演示欧姆定律串联电阻小应用

news2024/11/19 13:36:59

上述代码是一个基于Python的图形用户界面(GUI)应用程序,用于演示欧姆定律。用户可以通过输入电阻值来计算电流,并在图形上显示结果。该程序使用了Tkinter库来创建GUI,matplotlib库来绘制图形,以及numpy库进行数值计算。
输出效果图:
在这里插入图片描述

使用该代码的好处有以下几点:

直观易用:该程序提供了图形界面,用户可以通过简单的输入和操作来了解欧姆定律的计算过程。
实时更新:程序能够实时更新电流、电压和电阻值的计算结果,以及在图形上显示相应的点。
可扩展性:该程序使用了模块化设计,可以根据需要添加更多的功能和计算方法。
可移植性强:由于该程序使用了Python语言编写,可以在不同操作系统和平台上运行,方便用户在不同环境中使用。

import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

class App:
    def __init__(self, root):
        self.root = root
        self.resistance_value1 = tk.StringVar()
        self.resistance_value2 = tk.StringVar()  # New variable for second resistance value
        self.voltage = 10.0  # 假设电压为10V

        # 创建标签并添加到界面上
        label1 = tk.Label(root, text="R1=")
        label1.grid(row=0, column=0, sticky='w')  # 使用sticky参数来确保标签不会移动
        label2 = tk.Label(root, text="R2=")
        label2.grid(row=0, column=1, sticky='w')  # 使用sticky参数来确保标签不会移动

        self.entry1 = ttk.Entry(root, justify='center', textvariable=self.resistance_value1, width=6)
        self.entry1.grid(row=0, column=0)
        self.entry1.bind('<Return>', self.update_light_bulb)  # 绑定回车键事件

        self.entry2 = ttk.Entry(root, justify='center', textvariable=self.resistance_value2, width=6)
        self.entry2.grid(row=0, column=1)  # Place second entry on the right side
        self.entry2.bind('<Return>', self.update_light_bulb)  # 绑定回车键事件

        self.figure, self.ax = plt.subplots(figsize=(5, 4), dpi=100)
        self.canvas = FigureCanvasTkAgg(self.figure, self.root)
        self.canvas.draw()
        self.canvas.get_tk_widget().grid(row=1, columnspan=5)  # Adjust to fit both entries and the canvas

        self.resistance1 = 0
        self.resistance2 = 0
        self.current = 0

        self.ax.set_title("欧姆定律")

        self.update_graph()

    def update_light_bulb(self, event=None):
        new_value1 = self.resistance_value1.get()
        new_value2 = self.resistance_value2.get()

        if float(new_value1) == 0 or float(new_value2) == 0:
            print("错误: 电阻值不能为零")
            return  # 提前返回,不执行后续的代码

        self.resistance1 = float(new_value1)
        self.resistance2 = float(new_value2)
        self.current = self.voltage / (self.resistance1 + self.resistance2)  # Update current based on both resistances
        self.update_graph()

    def update_graph(self):
        if self.resistance1 == 0 and self.resistance2 == 0:
            return

        self.ax.clear()
        x_limit = max(self.voltage / (self.resistance1 + self.resistance2), self.resistance1 + self.resistance2)
        self.ax.set_xlim(0, x_limit + 5)  # Adjust x-axis limit based on both resistances combined
        self.ax.set_ylim(0, max(self.voltage, 1))

        # Plot both resistances and the combined current value (blue dot)
        self.ax.plot([self.resistance1, self.resistance2], [self.current, self.current], marker='o', color='blue')

        self.ax.set_xlabel('电阻/R')
        self.ax.set_ylabel('电流/I')
        self.ax.set_title('欧姆定律计算演示器')

        text = f"I={self.current:.2f}, U={self.voltage:.2f}, R1={self.resistance1:.2f}, R2={self.resistance2:.2f}"
        self.ax.text(0.05, 0.9, text, verticalalignment='top', horizontalalignment='left', transform=self.ax.transAxes,
                     color='red')

        total_res

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

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

相关文章

使用git工具向GitHub远程仓库提交代码

注意更新仓库&#xff1a; 远程仓库更新方法&#xff1a; 本地仓库更新方法&#xff1a;在终端进入克隆的文件夹&#xff0c;依次执行如下指令&#xff1a; git config pull.rebase false //使用默认的合并策略 git pull //执行实际的拉取操作以下为常规操作&#xff…

【React教程】(3) React之表单、组件、事件处理详细代码示例

目录 事件处理示例1示例2示例3&#xff08;this 绑定问题&#xff09;示例4&#xff08;传递参数&#xff09;Class 和 Style 表单处理组件组件规则注意事项函数式组件&#xff08;无状态&#xff09;类方式组件&#xff08;有状态&#xff09;组件传值 Propsthis.props.childr…

bert提取词向量比较两文本相似度

使用 bert-base-chinese 预训练模型做词嵌入&#xff08;文本转向量&#xff09; 模型下载&#xff1a;bert预训练模型下载-CSDN博客 参考文章&#xff1a;使用bert提取词向量 下面这段代码是一个传入句子转为词向量的函数 from transformers import BertTokenizer, BertMod…

神经网络建立(结果可变)最小神经元

目录 介绍&#xff1a; 初始化&#xff1a; 建模: 预测&#xff1a; 改变结果&#xff1a; 介绍&#xff1a; 在深度学习中&#xff0c;神经元通常指的是人工神经元&#xff08;或感知器&#xff09;&#xff0c;它是深度神经网络中的基本单元。深度学习的神经元模拟了生…

腾讯发表多模态大模型最新综述,从26个主流大模型看多模态效果提升关键方法

在大规模语言模型&#xff08;LLMs&#xff09;通往通用人工智能&#xff08;AGI&#xff09;的道路中&#xff0c;从传统的单一的“语言模态”扩展到“图像”、“语音”等等的“多模态”必然是大模型进化的必经之路。 在过去的 2023 年&#xff0c;多模态大规模语言模型&…

Java 与 JavaScript的区别

Java 与 JavaScript的区别 Java 与 JavaScript&#xff1a;概述Java的特点JavaScript 的起源JavaScript 的特点Java 与 JavaScript&#xff0c;哪个更好&#xff1f;JavaScript 与 Java 相似吗&#xff1f;Java 与 JavaScript 的区别JavaScript 在服务器端的运行方式是怎样的&a…

arco design table遇到的一些问题

问题1&#xff1a;不知情就成了树形table table中不知道为啥就多了个树形加号在前面&#xff0c;查找问题后发现&#xff0c;是后端返回的数据中有children&#xff0c;框架中默认对这个参数做了树形结构。 解决办法&#xff1a; 当时没找到取消或者修改字段的属性或方法&…

美赛违规被判作弊,注意这几种情况

每年都会有队伍被判为作弊或无效&#xff0c;无非就是买了思路、找了代做或不小心造成的。 下图是2023美赛评奖结果&#xff08;MCM是前三题&#xff0c;ICM是后三题&#xff0c;去年疫情补办了春季赛&#xff09;&#xff0c;可以看到共1264个队被取消评奖资格&#xff08;Di…

扩展学习|一文明晰推荐系统应用开发核心技术发展

文献来源&#xff1a;Lu J, Wu D, Mao M, et al. Recommender system application developments: a survey[J]. Decision support systems, 2015, 74: 12-32. 主题&#xff1a;关于推荐系统应用开发的调查研究 关键词:推荐系统、电子服务个性化、电子商务、电子学习、电子政务 …

STM32学习笔记一——初识STM32

目录 一、什么是ARM 二. Cortex 内核 三.什么是STM32 四.STM32核心板原理图&#xff1a; 五.STM32的内部结构&#xff1a; 六.stm32系统结构简化图 STM32基本原理分析&#xff1a; 七.典型型号——STM32F103ZET6 stm32——32位单片机&#xff08;数据总线是32位的&am…

idea连接docker

idea 插件无法连接docker问题 原文&#xff1a;idea 插件无法连接docker问题 // 修改docker配置 vi /usr/lib/systemd/system/docker.service // 加上该段配置允许任何ip访问 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock // 重启docker即可 systemctl restart dock…

计算机网络·网络层

网络层 网络层提供的两种服务 争论&#xff1a; 网络层应该向运输层提供怎样的服务&#xff1f;面向连接还是无连接&#xff1f; 在计算机通信中&#xff0c;可靠交付应当由谁来负责&#xff1f;是网络还是端系统&#xff1f; 2 种观点&#xff1a; 面向连接的可靠交付。 无连…

PaddleNLP的简单使用

1 介绍 PaddleNLP是一个基于PaddlePaddle深度学习平台的自然语言处理&#xff08;NLP&#xff09;工具库。 它提供了一系列用于文本处理、文本分类、情感分析、文本生成等任务的预训练模型、模型组件和工具函数。 PaddleNLP有统一的应用范式&#xff1a;通过 paddlenlp.Task…

Windows Server 2003 Web服务器搭建

系列文章目录 目录 系列文章目录 前言 一、Web服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装Web服务器 4)查看安装是否成功 5)打开Internet信息服务(IIS)管理器,进行配置 6)找…

Deepin基本环境查看(七)【任务管理器和进程管理】

Deepin基本环境查看 - 目录Deepin基本环境查看&#xff08;一&#xff09;【基本信息】Deepin基本环境查看&#xff08;二&#xff09;【内存】Deepin基本环境查看&#xff08;三&#xff09;【网络信息】Deepin基本环境查看&#xff08;四&#xff09;【硬盘/分区、文件系统、…

Sqli-labs-master第一关通关攻略

第一关基于错误的字符串/数字型注入 第一关打开&#xff0c;请输入id数值作为参数&#xff0c;那就输呗整个1&#xff0c;2&#xff0c;3看看效果 通过ID数值得变动&#xff0c;页面也随之发生变化&#xff0c;然后就是判断SQL语句是否拼接&#xff0c;是字符型还是数字型 输入…

C++ —— 智能指针

C —— 智能指针 文章目录 C —— 智能指针一、为什么需要使用智能指针&#xff1f;二、内存泄漏什么是内存泄漏&#xff1f;内存泄漏的危害&#xff1f;内存泄漏分类 三、智能指针的使用及原理1. RAII2. 智能指针的原理 三、智能指针的缺陷及其发展3.1 std::auto_ptr3.2 std::…

Spring IoC容器(一)

IoC,Inversion of Control 控制反转&#xff0c;是一个过程。仅通过构造函数、工厂方法或在对象实例化后在对象实例上设置属性来定义其依赖关系。容器负责这些工作&#xff0c;这个过程从本质上来说是bean本身的反向&#xff0c;因此称为反向控制。 1 容器 负责实例化、配置及…

Linux系列之查看cpu、内存、磁盘使用情况

查看磁盘空间 df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息。使用df -h命令&#xff0c;加个-h参数是为了显示GB MB KB单位&#xff0c;这样更容易查看 Filesystem …

2024年软考高项备考攻略

一、了解考试大纲和要求 在开始备考之前&#xff0c;首先要对考试大纲和要求进行全面了解。这有助于明确考试内容和学习方向&#xff0c;制定学习计划。 二、制定学习计划 在制定计划时&#xff0c;可以根据自己的实际情况和学习习惯&#xff0c;选择适合自己的学习方式。以…