【发布时间】:2021-03-04 23:39:21
【问题描述】:
我目前正在编写代码来解决理想气体定律中的任何变量,并且在达到输出时遇到了问题。
我最终希望通过这个项目达到一个点,在我的计算器中添加了大量的方程和定律,但是我已经开始使用理想气体定律。我目前在使用 Tkinter 单选按钮和检索选定按钮后面的值时遇到问题。每次我尝试使用 .get() 时,无论选择如何,我的单选按钮都会返回零值。
我有三个类,我目前正在使用它们,它们都将根据工作量进行细分。如果有人能帮助我精简代码并尽量减少体积,我也将不胜感激。
图形界面类
from tkinter import *
import tkinter as tk
import math
import turtle
from turtle import*
from conversions import Conversions
from calculator import Calculator, Output
class CalculatorGUI:
""" All Branches of Calculator """
def IdealGasGUI(): #IDEAL GAS LAW
master = Tk()
var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()
var4 = tk.IntVar()
""" Activation Code """
def SolveIdeal():
Calculate = Calculator()
p = int(pN.get())
v = int(vN.get())
n = int(nN.get())
t = int(tN.get())
target = var1.get()
pU = var2.get()
vU = var3.get()
tU = var4.get()
Calculate.IdealGas(p,v,n,t,target,pU,vU,tU)
master.geometry('540x500')
master.title('Science Calculator © 2020 Heath Marchese All Rights Reserved')
Label(master, text="Science Calculator - Ideal Gas Law", font='Helvetica 24 bold').grid(row=0,rowspan=2,column=0,columnspan=4,pady=(0,25),sticky=N)
Label(master, text="Which variable is needed?", font ='Helvetica 14').grid(row=2,rowspan=1,column=1,columnspan=2,pady=(0,15))
Radiobutton(master, text="Pressure", font = "Helvetica 12", variable=var1, value=1).grid(row=3,column=0)
Radiobutton(master, text="Volume", font = "Helvetica 12", variable=var1, value=2).grid(row=3,column=1)
Radiobutton(master, text="Mole", font = "Helvetica 12", variable=var1, value=3).grid(row=3,column=2)
Radiobutton(master, text="Temperature", font = "Helvetica 12", variable=var1, value=4).grid(row=3,column=3)
Label(master, text="Pressure:", font ='Helvetica 14').grid(row=4,column=0,pady=(25,5))
pN = Entry(master)
pN.grid(row=4,column=1,sticky=W,pady=(25,0))
Radiobutton(master, text="kPa", font = "Helvetica 12", variable=var2, value=1).grid(row=5,column=0)
Radiobutton(master, text="torr", font = "Helvetica 12", variable=var2, value=2).grid(row=5,column=1)
Radiobutton(master, text="ATM", font = "Helvetica 12", variable=var2, value=3).grid(row=5,column=2)
Radiobutton(master, text="mmHg", font = "Helvetica 12", variable=var2, value=4).grid(row=5,column=3)
Label(master, text="Volume:", font ='Helvetica 14').grid(row=6,column=0,pady=(0,5))
vN = Entry(master)
vN.grid(row=6,column=1,sticky=W)
Radiobutton(master, text="L", font = "Helvetica 12", variable=var3, value=1).grid(row=7,column=0)
Radiobutton(master, text="cm^3", font = "Helvetica 12", variable=var3, value=2).grid(row=7,column=1)
Label(master, text="Mole:", font ='Helvetica 14').grid(row=8,column=0,pady=(0,28))
nN = Entry(master)
nN.grid(row=8,column=1,sticky=W,pady=(0,30))
Label(master, text="Temperature:", font ='Helvetica 14').grid(row=10,column=0,pady=(0,5))
tN = Entry(master)
tN.grid(row=10,column=1,sticky=W)
Radiobutton(master, text="°C", font = "Helvetica 12", variable=var4, value=1).grid(row=11,column=0)
Radiobutton(master, text="°F", font = "Helvetica 12", variable=var4, value=2).grid(row=11,column=1)
Radiobutton(master, text="K", font = "Helvetica 12", variable=var4, value=3).grid(row=11,column=2)
Button(master, text="Solve", font ='Helvetica 12 bold', command=SolveIdeal).grid(row=12,column=1,columnspan=2,pady=(15,0))
Button(master, text="Return", font ='Helvetica 12 bold', command=master.quit).grid(row=13,column=1,pady=(10,0))
Button(master, text="Quit", font ='Helvetica 12 bold', command=master.quit).grid(row=13,column=2,pady=(10,0),padx=(40))
""" Initial Calculator Code """
master = Tk()
Convert = Conversions()
master.geometry('500x500')
master.title('Science Calculator © 2020 Heath Marchese Some Rights Reserved')
Button(master, text="Ideal Gas Law", font = "Helvetica 12", command=IdealGasGUI).grid()
Button(master, text="Quit", font ='Helvetica 12 bold', command=master.quit).grid(pady=(300,0))
master.mainloop()
start = CalculatorGUI()
计算类
from tkinter import *
import tkinter
import math
import turtle
from turtle import*
from conversions import Conversions
def Output(out):
master = Tk()
master.geometry('200x200')
Label(master, text=out).grid()
class Calculator:
def IdealGas(master,p,v,n,t,targ,pU,vU,tU): #PV = nRT
print(p)
print(v)
print(n)
print(t)
print(targ)
print(pU)
print(vU)
print(tU)
Convert = Conversions()
if (pU == 1):
p = Convert.kPa_ATM(p)
elif (pU == 2):
p = Convert.torr_ATM(p)
elif (pU == 4):
p = Convert.mmHg_ATM(p)
if (vU == 2):
v = Convert.cm_L(v)
if (tU == 1):
t = Convert.C_K(t)
elif (tU == 2):
t = Convert.F_K(t)
if (targ == 1):
pres = (n * 0.08205 * t) / v
out = ("Answer: {.5f} ATM").format(pres)
master.Output(out)
elif (targ == 2):
vol = (n * 0.08205 * t) / p
out = ("Answer: {.5f} L").format(vol)
master.Output(out)
elif (targ == 3):
mol = (p * v) / (0.08205 * t)
out = ("Answer: {.5f} mol").format(mol)
master.Output(out)
elif (targ == 4):
temp = (p * v) / (n * 0.08205)
out = ("Answer: {.5f} K").format(temp)
master.Output(out)
转换类
from tkinter import *
import tkinter
import math
import turtle
from turtle import*
class Conversions: #Name of first unit respective to variable in methods. Name of second unit is returned
""" Pressure Conversions """
def mmHg_ATM(master,a):
return (a / 760)
def mmHg_kPa(master,a):
return (a / 7.50062)
def kPa_mmHg(master,a):
return ''
def kPa_ATM(master,a):
return (a / 101.325)
def kPa_torr(master,a):
return ''
def ATM_torr(master,a):
return ''
def ATM_mmHg(master,a):
return (a * 760)
def ATM_kPa(master,a):
return ''
def torr_mmHg(master,a):
return ''
def torr_ATM(master,a):
return (a / 760)
def torr_kPa(master,a):
return ''
""" Volume Conversions """
def cm_L(master,a):
return (a / 1000)
def L_cm(master,a):
return (a * 1000)
""" Temperature Conversions """
def C_K(master,a):
return (a + 273.15)
def C_F(master,a):
return ''
def F_C(master,a):
return (a / 101.325)
def F_K(master,a):
return (((a - 32) * 5 / 9) + 273.15)
def K_C(master,a):
return ''
def K_F(master,a):
return (a / 101.325)
非常感谢任何帮助。谢谢
【问题讨论】:
标签: python user-interface tkinter calculator