python - 当按下按钮时,Tkinter 为 Entry 打印 None
问题描述
当我尝试运行此代码时,它应该打印用户输入,而是每次都打印 None ,即使我为变量赋值。我应该做些什么?我也没有在控制台中收到错误。
from tkinter import *
main_window= Tk()
#labels
Label(main_window, text="Name:").grid(row=0,column=0)
Label(main_window,text="Age:").grid(row=1,column=0)
#text input
name= Entry(main_window,width=30,borderwidth=1).grid(row =0,column=1)
#text input for Class
age= Entry(main_window,width=30,borderwidth=1,).grid(row =1,column=1)
#defines on click function
def on_click():
print(f"Name = {name}, Age = {age}") #prints none when clicked submit
#Button
Button(main_window,text="Submit",command =on_click).grid(row=2,column=1)
main_window.mainloop()
这是代码
输出:
Name = None, Age = None
解决方案
您的代码有一些错误,主要是小部件的命名。
小Label
部件已命名,因此输出将发送给它们。
小Entry
部件已命名,因此可以使用该get
方法提取它们的内容。
该函数on_click
现在显示结果。
import tkinter as tk
main_window = tk.Tk()
labelname = tk.Label(main_window, text="Name:", anchor="nw", justify="left")
labelname.grid(row=0, column=0, sticky="ew")
labelage = tk.Label(main_window, text="Age:", anchor="nw", justify="left")
labelage.grid(row=1, column=0, sticky="ew")
name = tk.Entry(main_window, width=30)
name.grid(row=2, column=0)
age = tk.Entry(main_window, width=30)
age.grid(row=3, column=0)
def on_click():
labelname["text"] = f"Name: {name.get()}"
labelage["text"] = f"Age: {age.get()}"
tk.Button(main_window, text="Submit", command=on_click).grid(row=4, column=0)
main_window.mainloop()
推荐阅读
- ios - 像 UItabbar 一样完全透明和浮动
- javascript - 日期选择器的 UI react-datetime 不正确?
- asp.net-core - NLog如何访问RequestId?
- proxy - Kubernetes Minikube 未在企业代理 (Windows) 之后启动
- excel - 选择多个复选框后在 Excel VBA 中打印字符串
- powershell - 运行 SSRS powershell cmd 时出错
- javascript - 无效的表单不返回模式中的 JSON/表单字段错误
- amazon-web-services - 如何在 DynamoDb 中加入两个表?
- java - 我想根据打开文件的进度在终端中打印进度条
- azure-cosmosdb - Cosmos DB SQL API 查询