最近在做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无法获取值(值全为空)的解决办法的更多相关文章

  1. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

    android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...

  2. js获取浮动(float)元素的style.left值为空的解决办法

    解决办法: 1.使用行内样式设置元素的top和left值; 2.or直接获取元素的offsetLeft得到相关数值,还不需要parseInt 问题原因: 如果父div的position定义为relat ...

  3. UiAutomatorViewer无法获取手机截图进行元素定位的解决办法

    问题描述 本来想使用UIAutomatorView定位app页面元素的,最开始我使用的是夜神模拟器,打开UIAutomatorView连接模拟器没有问题,但是后来我使用真机时发现无法连接到真机获取真机 ...

  4. 在cmd窗口下运行Java程序时无法找到主类的解决办法

    我是Java的初学者,昨天在cmd窗口下运行一段Java程序时总是有问题,可以编译但无法执行. 也就是javac时正确,一旦java时就不对了,提示找不到或无法加载主类,经百度谷歌再加上自己的摸索终于 ...

  5. nginx反向代理服务器获取不到端口的问题的解决办法

    使用nginx为反向代理服务器时,后端应用程序获取不到请求端口的解决办法. 以下是nginx 简单的配置 server {         listen       81;         serve ...

  6. 【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 ...

  7. 在IDEA中使用JDBC获取数据库连接时的报错及解决办法

    在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...

  8. 新建虚拟机ping不通windows主机,windows主机ping不通虚拟机解决办法(图文)

    说明: 新建虚拟机和主机互ping不通,因此使用xhell等远程连接工具连接不上 解决办法:配置的时候注意网段 2.修改   /etc/sysconfig/network-scripts/ifcfg- ...

  9. Python内置的urllib模块不支持https协议的解决办法

    Django站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown url type: https”异常.寻根朔源发现是python内 ...

随机推荐

  1. LODOP中带caption的表格被关联并次页偏移测试

    ADD_PRINT_TABLE中的thead和tfoot可以每页输出,后面的打印项关联表格,可以紧跟着表格,实现在表格后面紧跟着输出内容的效果,表格可以自动分页,并总是跟在表格后面 ,在表格最后输出. ...

  2. Linux下,postgreSQL的查看与重启

    查看命令:ps aux | grep postgresnetstat -npl | grep postgres 方法1: #su - postgres $pg_ctl restart 方法2: #su ...

  3. 干货 | 20多门AI网络课程资源(附链接+PDF)

    现如今,在火爆的人工智能领域,面临的最窘迫的问题是越来越庞大的产业规模和国家每年约500万的相关人才需求的矛盾.广阔的发展前景.巨大的人才缺口和令人心动的行业薪资,让越来越多的年轻人选择了进入这一行业 ...

  4. CSS 按钮水波纹特效

    /* 按钮反馈之波纹 */ .ripple { position: relative; /* overflow:hidden */  打开注释及效果不扩散在外 } .ripple:focus{ out ...

  5. PHP 菠菜木马代码

    <?php error_reporting(E_ERROR);@ini_set('display_errors', 'Off');@ini_set('max_execution_time', 2 ...

  6. Linux下go环境搭建

    一:先从https://golang.google.cn/dl/下载,我这边下载的是go1.13.3.linux-amd64.tar.gz: 二:将压缩包解压后得到go目录,将go目录移动到/usr/ ...

  7. TypeScript 命名空间

    随着代码的不断增加,我们需要有组织的组合代码.TypeScript在1.x版本中提供了命名空间的方式进行代码组织,这也是TypeScript官方代码的组织方式.同时,TypeScript还实现了Jav ...

  8. 【HC89S003F4开发板】 2调度器

    HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...

  9. Istio技术与实践6:Istio如何为服务提供安全防护能力

    凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此. 今天,我们就来谈谈Istio第二主打功能---保护服务. 那么,便引出3个问题: l  Istio凭什么保护服务? l  ...

  10. Java Embeded 包 与各个架构之间的关系

    Oracle Java Embedded Suite 7.0 for Linux x86        V37917-01.zip        Oracle Java Embedded Suite ...