【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;重新安装。但是由于在没有完整…

ChatGPT与文心一言:谁更胜一筹?

在人工智能领域&#xff0c;语言模型的发展日新月异&#xff0c;ChatGPT与文心一言作为市面上两款备受瞩目的AI助手&#xff0c;各自具有一定的优势。本文将从智能回复、语言准确性和知识库丰富度等方面&#xff0c;对这两大AI助手进行比较&#xff0c;以期为大家提供一些参考。…

算法37:最大矩形(力扣84、85题)---单调栈

力扣84题&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#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;都报毒了还用就是傻逼了。 所以采用…

spring(三):IOC介绍及代码实现

1. IoC容器概述 IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理…

【第四天】蓝桥杯备战

题 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…

Linux命令-apk命令(Alpine Linux 下的包管理工具)

使用实例 apk install xxx apk search xxx # 支持正则 apk info xxx # 查看包的详细信息 apk show # list local package # 卸载并删除 包 apk del openssh openntp vim升级 upgrade命令升级系统已安装的所以软件包&#xff08;一般包括内核&#xff09;&#xff0c;当然也可…

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…

命令提示符

echo $PS1命令显示当前命令提示符的格式。 [rootlocalhost ~]# echo $PS1 [\u\h \W]\$参数含义 \u 代表是用户 user 分割符号\h 代表主机名 hostname\W 代表当前的工作目录&#xff08;当前的路径&#xff09; working\$ 如果你是root用户就是# &#xff0c;如果你是非root用户…

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

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

项目中日历管理学习使用

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

vue3中下载预览文件方法封装(已获取文件地址)

1.封装方法 在src/utils文件夹下新建文件previewDownFile.js import axios from "axios"; import { ElMessage} from "element-plus";export function previewBtn(url,fileName) { // url-下载预览地址 fileName-文件名if (!fileName) { // 图片预览wind…

P1591 阶乘数码题解

题目 求n!中某个数码出现的次数。 输入输出格式 输入格式 第一行为t(t≤10)&#xff0c;表示数据组数。接下来t行&#xff0c;每行一个正整数n(n≤1000) 和数码a。 输出格式 对于每组数据&#xff0c;输出一个整数&#xff0c;表示n!中a出现的次数。 输入输出样例 输入…

SpringMVC-域对象共享数据

文章目录 域对象共享数据一、三种域对象二、通过ServletAPI向Request域对象共享数据三、使用ModelAndView向Request域对象共享数据四、使用Model向Request域对象共享数据五、使用Map向Request域对象共享数据六、使用ModelMap向Request域对象共享数据七、向Session域对象共享数据…

go-zero配置DB的redis缓存

配置定义&#xff1a; # cat internal/config/config.go package configimport ("github.com/zeromicro/go-zero/rest""github.com/zeromicro/go-zero/core/stores/cache" )type Config struct {rest.RestConfCacheRedis cache.CacheConf }对应的配置文件…