python - Tkinter get() 函数没有返回任何内容
问题描述
我正在尝试使用 tkinter GUI 编写一个程序来计算一些东西。我的 get() 函数不起作用,我不知道为什么
from tkinter import *
from math import *
root = Tk()
v = 0
l = 0
w = 0
t1 = 0
t0 = 0
label1 = Label(root, text = "Enter value for length (mm) :").grid(columnspan = 2, sticky = "E")
length = Entry(root).grid(row = 0, column = 2)
label2 = Label(root, text = "Enter value for volume (mm^2) :").grid(columnspan = 2, sticky = "E")
volume = Entry(root).grid(row = 1, column = 2)
label3 = Label(root, text = "Enter value for the thickness of the cylinder (mm) :").grid(columnspan = 2, sticky = "E")
thickness = Entry(root).grid(row = 2, column = 2)
label4 = Label(root, text = "Enter value for starting temperature (K) :").grid(columnspan = 2, sticky = "E")
st_T = Entry(root).grid(row = 3, column = 2)
label5 = Label(root, text = "Enter value for finishing temperature (K) :").grid(columnspan = 2, sticky = "E")
end_T = Entry(root).grid(row = 4, column = 2)
def save():
v = volume.get()
l = length.get()
w = thickness.get()
t0 = st_T.get()
t1 = end_T.get()
global values
values = [v, l, w, t1, t0]
answer = StringVar()
labelans = Label(root, textvariable = answer).grid(columnspan = 3,)
answer.set("Answer = ")
def area_circle():
global answer
answer = v / l
print(answer)
Button(root, text = "Submit", command = save()).grid(row = 6, column = 0)
root.mainloop()
显然有一些变量我还没有使用,但我试图首先让第一部分正确。
对于 v,显示的错误是:Message='NoneType' object has no attribute 'get'
解决方案
网格几何管理器将小部件放在二维表中。主小部件分为许多行和列,结果表中的每个“单元格”都可以容纳一个小部件。
重要的是 Grid() 返回 NoneValue
如果你这样做:
length = Entry(root).grid(row = 0, column = 2)
在您的可变长度中,您将拥有 NoneValue
你应该这样做:
length = Entry(root) length.grid(row = 0, column = 2)
你的代码:
label1 = Label(root, text = "Enter value for length (mm) :")
label1.grid(columnspan = 2, sticky = "E")
length = Entry(root)
length.grid(row = 0, column = 2)
label2 = Label(root, text = "Enter value for volume (mm^2) :")
label2.grid(columnspan = 2, sticky = "E")
volume = Entry(root)
volume.grid(row = 1, column = 2)
label3 = Label(root, text = "Enter value for the thickness of the cylinder (mm) :")
label3.grid(columnspan = 2, sticky = "E")
thickness = Entry(root)
thickness.grid(row = 2, column = 2)
label4 = Label(root, text = "Enter value for starting temperature (K) :")
label4.grid(columnspan = 2, sticky = "E")
st_T = Entry(root)
st_T.grid(row = 3, column = 2)
label5 = Label(root, text = "Enter value for finishing temperature (K) :")
label5.grid(columnspan = 2, sticky = "E")
end_T = Entry(root)
end_T.grid(row = 4, column = 2)
def save():
v = volume.get()
l = length.get()
w = thickness.get()
t0 = st_T.get()
t1 = end_T.get()
global values
values = [v, l, w, t1, t0]
answer = StringVar()
labelans = Label(root, textvariable = answer).grid(columnspan = 3,)
answer.set("Answer = ")
def area_circle():
global answer
answer = v / l
print(answer)
Button(root, text = "Submit", command = save()).grid(row = 6, column = 0)
root.mainloop()
输出:
推荐阅读
- openshift - openshift 3.11 是否支持 ipvs 代理模式?
- java - 如何修复“java.sql.SQLSyntaxErrorException:'字段列表'中的未知列'product0_.return_policy'”异常?
- c# - 为什么某些属性/字段在调试器中可见,但无法从代码中访问?
- window - 使用 nuxtjs “未定义窗口”。尝试使用 generate 构建页面
- angular - 未找到模块错误无法解析角度 7
- r - 设置 ROC 的 y 值
- php - 无法访问 /en/ 子文件夹中的 index.php
- hadoop - 当端口未打开时,是否可以通过 nginx 进行端口转发?
- c - 如何修复 - 使用 getchar() 和 do-while 的意外输出
- java - 无法加载 PySpark ALS 模型