(tkinter图形界面)模拟经典物理实验——凸透镜、凹透镜成像

查看 88|回复 9
作者:mtDNA   
用tkinter图形界面演示的凸透镜、凹透镜成像实验
import tkinter as tk
import threading
class Axis:       #主光轴
    def __init__(self):     #创建主光轴
        self.line=cv_display.create_line(0, 0, 1000, 0, width=2, arrow="none", dash=(2,1,2,1))      #dash参数设置为虚线
    def move(self, y):      #根据坐标移动
        self.rel_y=get_relpos(y=y)[1]       #转换为画布坐标
        cv_display.coords(self.line, (0, self.rel_y, 1000, self.rel_y))     #重置位置
class Obj:      #物体
    def __init__(self, h):     #创建物体,h为高度
        self.h=round(h)
        self.pic=cv_display.create_line((0, 0, 0, self.h), width=3, arrow="last", arrowshape=(20, 30, 10), fill="black", state="normal")
    def move(self, x, y):      #根据坐标移动
        self.x=x
        self.rel_x, self.rel_y=get_relpos(x, y)       #转换为画布坐标
        cv_display.coords(self.pic, (self.rel_x, self.rel_y, self.rel_x, self.rel_y-self.h))     #重置位置
class Len:      #透镜
    def __init__(self, h):     #创建透镜,h为高度
        self.h=round(h)
        self.convex=cv_display.create_line((0, 0, 0, self.h), width=1, arrow="both", arrowshape=(10, 30, 5))     #创建凸透镜
        self.concave=cv_display.create_line((0, 0, 0, self.h), width=1, arrow="both", arrowshape=(-10, -30, 5))     #创建凹透镜
        self.flat=cv_display.create_line((0, 0, 0, self.h), width=1, arrow="none")     #创建f=0的透镜替代品
    def status_process(self):       #根据焦距选择合适的透镜状态, 隐藏其他状态
        if f>0:
            cv_display.itemconfigure(self.convex, state="normal")
            cv_display.itemconfigure(self.concave, state="hidden")
            cv_display.itemconfigure(self.flat, state="hidden")
            self.pic=self.convex
        elif f0:
            if abs(u)>f:
                self.real=True
            elif abs(u)0:
                k1=(inc[1]-start[1])/u
                k2=k1-(inc[1]-axis_y)/f
                return k2
            elif u0:
        return 1
    elif x
大致原理:


0.PNG (27.63 KB, 下载次数: 0)
下载附件
2023-2-25 18:18 上传

效果展示:


1.png (172.12 KB, 下载次数: 0)
下载附件
2023-2-25 18:16 上传



11.png (168.22 KB, 下载次数: 0)
下载附件
2023-2-25 18:16 上传



2.png (172.26 KB, 下载次数: 0)
下载附件
2023-2-25 18:16 上传

坐标, 透镜

E式丶男孩   

我们真的学的是一个python吗
hjxhjxjx   

学习到了,谢谢分享
Arcticlyc   

厉害,学习学习
RainPPR   

膜拜大神!
36307183   

膜拜大神!
zxxiaopi   

厉害啊感谢分享
blindcat   

感觉好厉害
huduke   

厉害,学习学习
麦米尔加弗德   


E式丶男孩 发表于 2023-2-25 18:46
我们真的学的是一个python吗

我在看天书
您需要登录后才可以回帖 登录 | 立即注册

返回顶部