前言
本机械狗总是要用到带传动,会常常计算同步带节线长,每次算都要查公式,带入,敲手机计算器,久而久之咱就算烦了,索性就自己做一个吧,用的是最简单的gui库tkinter。
一、tkinter是什么?
Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的,所以开发一个图像化的小窗口,就是必要的。
二、代码
1.引入库
import math # 因为计算公式要用到pi,引入math库python才能认识pi
import tkinter as tk
2.创建窗口
window = tk.Tk() # 创建窗口
window.title('同步带轮节线长计算器v1.0') # 窗口名字
window.geometry('400x400+400+300') # 窗口大小和xy偏移量 宽*高+x偏移量+y偏移量
3.用.pack方式放置Label和Entry
label1 = tk.Label(window, text='模数:', bg='green', font=('Arial', 12), width=30, height=2)
label1.pack()
inputM = tk.StringVar()
e1 = tk.Entry(window, show=None, font=('Arial', 14), textvariable=inputM)
e1.pack()
label2 = tk.Label(window, text='中心距:', bg='green', font=('Arial', 12), width=30, height=2)
label2.pack()
inputC = tk.StringVar()
e2 = tk.Entry(window, show=None, font=('Arial', 14), textvariable=inputC)
e2.pack()
label3 = tk.Label(window, text='主动轮齿数:', bg='green', font=('Arial', 12), width=30, height=2)
label3.pack()
inputz = tk.StringVar()
e3 = tk.Entry(window, show=None, font=('Arial', 14), textvariable=inputz)
e3.pack()
label4 = tk.Label(window, text='从动轮齿数:', bg='green', font=('Arial', 12), width=30, height=2)
label4.pack()
inputZ = tk.StringVar()
e4 = tk.Entry(window, show=None, font=('Arial', 14), textvariable=inputZ)
e4.pack()
4.同步带节线长算法
def syncLcal():
# M 模数
# Z 大带轮齿数
# z 小带轮齿数
# L 近似皮带节线长
# C 两轴的中心距
# Dp 大带轮的节径
# dp 小带轮节径
M = inputM.get()
C = inputC.get()
z = inputz.get()
Z = inputZ.get()
dp = int(M) * int(z) / math.pi
Dp = int(M) * int(Z) / math.pi
L = 2 * float(C) + 1.57 * (Dp + dp) + ((Dp - dp) ** 2) / (4 * float(C))
outputVar.set('节线长:%.2f mm' % L)
5.放置Button,并关联算法
b1 = tk.Button(window, text='计算', font=('Arial', 12), width=10, height=1, command=syncLcal)
b1.pack()
outputVar = tk.StringVar() # 获取输出的变量
outputVar.set('点击计算')
outputLabel = tk.Label(window, textvariable=outputVar, font='微软雅黑 24 normal', fg='green')
outputLabel.pack(padx=5, pady=10)
window.mainloop() # 持续监听
6.Run
总结
现在功能比较单一且不太完善,以后逐步改进。