Tkinter关于新建窗口内Entry无法获取值(值全为空)的解决办法
最近在做Python的课程作业,遇到一个问题,描述如下:
使用Python内置的Tkinter模块进行GUI编程
给一个按钮(或菜单)绑定事件,打开一个新窗口,新窗口内有Entry若干,通过textvariable选项绑定变量,用于获取用户输入,但通过控制台输出(或方法参数传递)检查得知,程序获取到的数据全是空,即无任何有效内容被捕获。
源代码如下:
def new_restaurant():
new_window=tk.Tk()
new_window.title("新建餐厅(New restaurant)")
new_window.geometry('700x500') tk.Label(new_window,text='填写餐厅详细信息',font=("微软雅黑", 16)).grid(row=0,column=0,pady=5,padx=10) e_name = tk.StringVar()
e_id = tk.StringVar()
e_borough = tk.StringVar()
e_coord_x = tk.StringVar()
e_coord_y = tk.StringVar()
e_street=tk.StringVar()
e_building=tk.StringVar()
e_zipcode=tk.StringVar()
e_cuisine=tk.StringVar() tk.Label(new_window,text='餐厅名',font=("微软雅黑", 12)).grid(row=1,column=0)
tk.Entry(new_window,textvariable = e_name,font=("微软雅黑", 12)).grid(row=1,column=1,columnspan=2) tk.Label(new_window,text='餐厅ID',font=("微软雅黑", 12)).grid(row=2,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_id).grid(row=2,column=1,columnspan=2) tk.Label(new_window,text='所在地/自治市',font=("微软雅黑", 12)).grid(row=3,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable=e_borough).grid(row=3,column=1,columnspan=2) tk.Label(new_window,text='坐标',font=("微软雅黑", 12)).grid(row=4,column=0)
tk.Label(new_window,text=' X坐标',font=("微软雅黑", 12)).grid(row=4,column=1)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_coord_x,width=5).grid(row=4,column=2)
tk.Label(new_window,text=' Y坐标',font=("微软雅黑", 12)).grid(row=4,column=3)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_coord_y,width=5).grid(row=4,column=4) tk.Label(new_window,text='街道',font=("微软雅黑", 12)).grid(row=5,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_street).grid(row=5,column=1,columnspan=2) tk.Label(new_window,text='建筑号',font=("微软雅黑", 12)).grid(row=6,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_building).grid(row=6,column=1,columnspan=2) tk.Label(new_window,text='邮政编码',font=("微软雅黑", 12)).grid(row=7,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_zipcode).grid(row=7,column=1,columnspan=2) tk.Label(new_window,text='主菜',font=("微软雅黑", 12)).grid(row=8,column=0)
tk.Entry(new_window,font=("微软雅黑", 12),textvariable =e_cuisine).grid(row=8,column=1,columnspan=2)
save_button=tk.Button(new_window,text='保存(Save)',command=lambda : save_new(e_name.get(),e_borough.get(),e_coord_x.get(),e_id.get(),\
e_coord_y.get(),e_street.get(),e_zipcode.get(),e_cuisine.get(),e_building.get(),\
e_date1.get(),e_grade1.get(),e_score1.get(),\
e_date2.get(),e_grade2.get(),e_score2.get(),\
e_date3.get(),e_grade3.get(),e_score3.get(),\
e_date4.get(),e_grade4.get(),e_score4.get(),\
e_date5.get(),e_grade5.get(),e_score5.get()\
))
save_button.grid(row=16,column=1) new_window.mainloop()
通过查询资料获得了解决办法,特记录如下:
错误原因:使用了tk.Tk()方法来新建窗口,这样得到的是一个新的根窗口,无法与原来的根窗口进行有效交互。
因此需要使用Toplevel组件新建顶级窗口,Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏、边框等部件,和 Tk() 创建出来的根窗口是一样的,共享着一样的方法。
解决办法:替换第二行代码 new_window=tk.Tk() 为 new_window=tk.Toplevel()
Tkinter关于新建窗口内Entry无法获取值(值全为空)的解决办法的更多相关文章
- android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...
- js获取浮动(float)元素的style.left值为空的解决办法
解决办法: 1.使用行内样式设置元素的top和left值; 2.or直接获取元素的offsetLeft得到相关数值,还不需要parseInt 问题原因: 如果父div的position定义为relat ...
- UiAutomatorViewer无法获取手机截图进行元素定位的解决办法
问题描述 本来想使用UIAutomatorView定位app页面元素的,最开始我使用的是夜神模拟器,打开UIAutomatorView连接模拟器没有问题,但是后来我使用真机时发现无法连接到真机获取真机 ...
- 在cmd窗口下运行Java程序时无法找到主类的解决办法
我是Java的初学者,昨天在cmd窗口下运行一段Java程序时总是有问题,可以编译但无法执行. 也就是javac时正确,一旦java时就不对了,提示找不到或无法加载主类,经百度谷歌再加上自己的摸索终于 ...
- nginx反向代理服务器获取不到端口的问题的解决办法
使用nginx为反向代理服务器时,后端应用程序获取不到请求端口的解决办法. 以下是nginx 简单的配置 server { listen 81; serve ...
- 【js】react-native Could not find iPhone 6 simulator 和 Entry, ":CFBundleIdentifier", Does Not Exist 两种报错解决办法
一.在运行rn app应用时,react-native run:ios 报错出现 Could not find iPhone 6 simulator 解决办法: 1.react-native r ...
- 在IDEA中使用JDBC获取数据库连接时的报错及解决办法
在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...
- 新建虚拟机ping不通windows主机,windows主机ping不通虚拟机解决办法(图文)
说明: 新建虚拟机和主机互ping不通,因此使用xhell等远程连接工具连接不上 解决办法:配置的时候注意网段 2.修改 /etc/sysconfig/network-scripts/ifcfg- ...
- Python内置的urllib模块不支持https协议的解决办法
Django站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown url type: https”异常.寻根朔源发现是python内 ...
随机推荐
- 测试框架nunit之assertion断言使用详解
任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit.phpUnit.pythonUnit)相比,由于大量使用了Generic.Attribute等语言 ...
- C#Json数据反序列化为Dictionary并根据关键字获取指定的值
Json数据: { "dataSet": { "header": { ", "errorInfo": "HTTP请求错误 ...
- Linux下,postgreSQL的查看与重启
查看命令:ps aux | grep postgresnetstat -npl | grep postgres 方法1: #su - postgres $pg_ctl restart 方法2: #su ...
- iOS 多线程的简单理解(2) 队列 :串行 ,并行,MainQueue,GlobalQueue
多线程队列是装载线程任务的队形结构.(系统以先进先出的方式调度队列中的任务执行 FIFO).在GCD中有两种队列: 串行队列.并发队列. 队列 :串行队列.并发队列,全局主对列,全局并发队列 2.1. ...
- Netty学习笔记(四)——实现dubbo的rpc
1.rpc基本介绍 RPC ( Remote Procedure Call) -远程过程调用,是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,两个或多个应用程序分布不同 ...
- mysql大小写敏感配置
mysql大小写敏感配置show global variables like '%lower_case%'; show global variables like '%lower_case%'; &l ...
- 关于Hive中的join和left join的理解
一.join与left join的全称 JOIN是INNER JOIN的简写,LEFT JOIN是LEFT OUTER JOIN的简写. 二.join与left join的应用场景 JOIN一般用于A ...
- 015 Android md5密码加密及其工具类
1.md5加密介绍 MD5算法是广泛使用的杂凑函数,也就是哈希函数,英文全拼是:Message Digest Algorithm,对应的中文名字是消息摘要算法. MD5加密:将字符串转换成 32位的字 ...
- 【转帖】linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York
linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York 2015-02-10 10:58:22 youcha ...
- Spring Security 官网文档学习
文章目录 通过`maven`向普通的`WEB`项目中引入`spring security` 配置 `spring security` `configure(HttpSecurity)` 方法 自定义U ...