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

上述代码是一个基于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 FigureCanvasTkAggclass App:def __init__(self, root):self.root = rootself.resistance_value1 = tk.StringVar()self.resistance_value2 = tk.StringVar()  # New variable for second resistance valueself.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 sideself.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 canvasself.resistance1 = 0self.resistance2 = 0self.current = 0self.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 resistancesself.update_graph()def update_graph(self):if self.resistance1 == 0 and self.resistance2 == 0:returnself.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 combinedself.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.mzph.cn/news/649287.shtml

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

相关文章

Unity出AAB包资源加载过慢

1&#xff09;Unity出AAB包资源加载过慢 2&#xff09;Unity IL2CPP打包&#xff0c;libil2cpp.so库中没有Mono接口 3&#xff09;如何在URP中正确打出Shader变体 4&#xff09;XLua打包Lua文件粒度问题 这是第370篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&…

Ubuntu20.04输入法异常导致的黑屏:fcitx和ibus输入法的卸载与安装

Ubuntu20.04输入法异常导致的黑屏&#xff1a;fcitx和ibus输入法的卸载与安装_ubuntu卸载fcitx-CSDN博客 问题背景 系统&#xff1a;Ubuntu20.04 由于fcitx的不完整配置&#xff0c;导致fcitx输入法无法正常工作。决心卸载所有输入法&#xff0c;重新安装。但是由于在没有完整…

[每日一题] 01.26 - 最长连号

最长连号 n int(input()) lis list(map(int,input().split())) res for i in range(n - 1):if lis[i] 1 lis[i 1]:res 1else:res 0res res.split(0) print(len(max(res)) 1)或者&#xff1a; n int(input()) lis list(map(int,input().split()))Max 1 for i in …

研发日记,Matlab/Simulink避坑指南(五)——CAN解包 DLC Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南&#xff08;一&#xff09;——Data Store Memory模块执行时序Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 见《…

win10安装redis并配置加自启动(采用官方推荐unix子系统)

记录&#xff0c;为啥有msi安装包&#xff0c;还这么麻烦的用linux版本redis的安装方式&#xff0c;是因为从github上下载别人制作的msi报毒&#xff0c;还不止一处&#xff0c;这种链接数据库的东西&#xff0c;用别人加工过的&#xff0c;都报毒了还用就是傻逼了。 所以采用…

【第四天】蓝桥杯备战

题 1、求和2、天数3、最大缝隙 1、求和 https://www.lanqiao.cn/problems/1442/learning/ 解法&#xff1a;字符串方法的应用 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scann…

c++ vector 赋值 只能用push_back()赋值 ?使用下标赋值出错,不能使用标赋值吗?

文章目录 1 push_back()赋值2 下标赋值2.1 下标赋值出错2.2 vector 真的 不能使用标赋值吗&#xff1f;2.2.1 只能使用push_back() 赋值情况2.2.2 push_back() 和 下标赋值 都可以2.2.3 先push_back()赋值&#xff0c;再下标赋值 2.3 push_back() 和 下标赋值 两种特点对比测试…

谷粒商城【成神路】-【1】——项目搭建

目录 &#x1f95e;1.整体架构图 &#x1f355;2.微服务划分图 &#x1f354;3.开发环境 &#x1f354;4.搭建git &#x1f32d;5.快速搭建服务 &#x1f37f;6.数据库搭建 &#x1f9c2;7.获取脚手架 &#x1f953;8.代码生成器 &#x1f373;9.创建公共模块 …

论文笔记(四十二)Diff-DOPE: Differentiable Deep Object Pose Estimation

Diff-DOPE: Differentiable Deep Object Pose Estimation 文章概括摘要I. 介绍II. 相关工作III. DIFF-DOPEIV. 实验结果A. 实施细节和性能B. 准确性C. 机器人-摄像机校准 V. 结论VI. 致谢 文章概括 作者&#xff1a;Jonathan Tremblay, Bowen Wen, Valts Blukis, Balakumar Su…

品牌突围|内容营销「共创公式」全面讲解

为什么品牌要扎根小红书&#xff1f;除了种草投放&#xff0c;品牌还能做些什么&#xff1f; 在小红书&#xff0c;迎接消费者共创的时代&#xff0c;激活品牌营销的无限潜能。 拥抱多元 在新机遇中预见未来 2023年&#xff0c;各大社交媒体平台涌现出了许多热点&#xff0c…

项目中日历管理学习使用

一些项目中会有日历或日期设置&#xff0c;最基本的会显示工作日&#xff0c;休息日&#xff0c;节假日等等&#xff0c;下面就是基于项目中的日历管理功能&#xff0c;要显示工作日&#xff0c;休息日&#xff0c;节假日 效果图 获取国家法定节假日工具类 public class Holi…

项目中遇到通过域名访问服务提示 Service name unknow

目录 项目中遇到通过域名访问服务提示 Service name unknow 1.问题描述2.问题原因3.解决思路4.解决方案文章所属专区 项目问题解决 1.问题描述 在CentOS 系统环境下 项目中遇到通过域名访问服务提示 Service name unknow,但是 网络是连通的 通过ping 和telnet都能够验证。 …

【江科大】STM32:外部中断(Extern Interrupt)

文章目录 EXTI&#xff08;Extern Interrupt&#xff09;外部中断EXIT的基本结构EXIT框图 旋转编码器简介库函数&#xff1a;对射式红外传感器计次&#xff1a;代码展示&#xff1a;旋转编码器计次注意&#xff1a; EXTI&#xff08;Extern Interrupt&#xff09;外部中断 功能…

STM32标准库开发—W25Q64详细介绍

W25Q64简介 Flash编程原理都是只能将1写为0&#xff0c;而不能将0写成1.所以在Flash编程之前&#xff0c;必须将对应的块擦除&#xff0c;而擦除的过程就是将所有位都写为1的过程&#xff0c;块内的所有字节变为0xFF.因此可以说&#xff0c;编程是将相应位写0的过程&#xff0c…

Codewave学习体验分享:低代码开发世界的黑马

前言 Codewave平台介绍 CodeWave智能低代码开发平台基于网易自研拥有大规模参数和深度学习能力的智能模型底座产品架构,为企业级应用提供更加智能化研发的软件生产方式,IT人员可以轻易实现从“智能生成”到“可视化拖拽调整”的全栈低代码应用搭建,让复杂应用开发更加高效,加快…

Flink生产环境相关问题

1. FlinkKafka保证精确一次消费相关问题&#xff1f; Fink的检查点和恢复机制和可以重置读位置的source连接器结合使用&#xff0c;比如kafka&#xff0c;可以保证应用程序不会丢失数据。尽管如此&#xff0c;应用程序可能会发出两次计算结果&#xff0c;因为从上一次检查点恢…

Azure Private endpoint DNS 记录是如何解析的

Private endpoint 从本质上来说是Azure 服务在Azure 虚拟网络中安插的一张带私有地址的网卡。 举例来说如果Storage account在没有绑定private endpoint之前&#xff0c;查询Storage account的DNS记录会是如下情况&#xff1a; Seq Name …

Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)

代码&#xff1a; //import java.util.Scanner; public class practice{public static void main(String[] args) {int arr [] {1,2,3,4};String str arrToString(arr);System.out.println(str);}public static String arrToString(int [] arr){if(arrnull){return "&q…

(27)Linux信号的产生核心转储---初步认识信号

一、信号入门 1. 生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下&#xff0c;你也收到快递到来的通知&#xff0…

docker 体验怀旧游戏(魂斗罗等)

docker run --restart always -p 8081:80 --name fc-games -d registry.cn-hangzhou.aliyuncs.com/bystart/fc-games:latest ip:8081访问 jsnes: js制作了一个网页版的NES模拟&#xff0c;可以在网页上玩fc游戏 (gitee.com)