1921和18号线关于回拨



错误消息:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:UsersMISHIKAAppDataLocalProgramsPythonPython310libtkinter__init__.py", line 1921, in __call__
return self.func(*args)
File "C:UsersMISHIKAAppDataRoamingMicrosoftWindowsStart MenuProgramsPython 3.10tkinterclsss46.py", line 18, in caltemp
temp_f=temp1.get()
AttributeError: 'NoneType' object has no attribute 'get'

它应该转换温度

完整代码:

from tkinter import *
from tkinter import messagebox
root=Tk()
root.title("Converter")
root.geometry("600x400")
def caltemp():
var=StringVar()
var.set("°C")
temp1=Entry(root).grid(row=0, column=1)
d1=OptionMenu(root, var, "°C", "°F").grid(row=0, column=2)
lbl2=Label(root, text=" ").grid(row=0, column=3)
if d1=="°C":
temp_c=temp1.get()
temp_f=(float(temp_c)*9/5)+32
lbl2["text"]=f"{round(temp_f)}".grid(row=0, column=4)
lbldeg=Label(root, text="°C").grid(row=0, column=5)
else:
temp_f=temp1.get()
temp_c=(float(temp_f)-32)*5/9
lbl2["text"]=f"{round(temp_c)}".grid(row=0, column=4)
lbldeg=Label(root, text="°C").grid(row=0, column=5)
def temp():
var=StringVar()
var.set("°C")
temp1=Entry(root).grid(row=0, column=1)
d1=OptionMenu(root, var, "°C", "°F").grid(row=0, column=2)
lblt=Label(root, text="≈")
lbl2=Label(root, text=" ").grid(row=0, column=3)
btntemp=Button(root, text="Calculate", command=caltemp).grid(row=1, column=3)
menu1=Menu(root)
menu1.add_command(label="Temperature", command=temp)
menu1.add_command(label="Length")
menu1.add_command(label="Currency")
root.config(menu=menu1)
root.mainloop()

看看我的例子。

import tkinter as tk
from tkinter import messagebox
from functools import partial
temp_Val = "Celsius"
def store_temp(set_temp):
global temp_Val
temp_Val = set_temp
def call_convert(rlabel1, inputn):
temp = inputn.get()

if temp_Val == 'Celsius':

# Conversion of celsius temperature to fahrenheit
f = float((float(temp) * 9 / 5) + 32)
rlabel1.config(text ="%.1f Fahrenheit" % f)
messagebox.showinfo("Temperature Converter",
"Successfully converted to Fahrenheit ", )

if temp_Val == 'Fahrenheit':

# Conversion of fahrenheit temperature
# to celsius
c = float((float(temp) - 32) * 5 / 9)
rlabel1.config(text ="%.1f Celsius" % c)
messagebox.showinfo("Temperature Converter",
"Successfully converted to Celsius ")
return

root = tk.Tk()
root.geometry('300x150')
root.title('Temperature Converter')
root.grid_columnconfigure(1, weight = 1)
root.grid_rowconfigure(1, weight = 1)
inputNumber = tk.StringVar()
var = tk.StringVar()
input_label = tk.Label(root, text ="Enter temperature")
input_entry = tk.Entry(root, textvariable = inputNumber)
input_label.grid(row = 1)
input_entry.grid(row = 1, column = 1)
result_label = tk.Label(root)
result_label.grid(row = 3, columnspan = 4)
dropDownList = ["Celsius", "Fahrenheit"]
drop_down = tk.OptionMenu(root, var, *dropDownList,
command = store_temp)
var.set(dropDownList[0])
drop_down.grid(row = 1, column = 2)
call_convert = partial(call_convert, result_label,
inputNumber)
result_button = tk.Button(root, text ="Convert",
command = call_convert)
result_button.grid(row = 2, columnspan = 2)
root.mainloop()

最新更新