python tkinter 用Toplevel建立子窗口,Entry.get返回为空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python tkinter 用Toplevel建立子窗口,Entry.get返回为空?相关的知识,希望对你有一定的参考价值。

def create():
top = Toplevel()
top.title('我的弹窗')
Label(top,text="省份名").grid(row=0,column=0)

var=StringVar()
e = Entry(top,show='',textvariable=var)
e.grid(row=0,column=1,padx=10,pady=5)

print(var.get())
s=var.get()
s= str(s)
filename= "file:/Users/shidaidemac/Desktop/python大作业/province/"+s+"疫情地图.html"
def open_url2():
webbrowser.open(filename, new=0)

Button(top,text = "获取信息",width = 10,command = open_url2)\
.grid(row = 3,column = 0,sticky = W,padx =10,pady =5)

Button(root,text = '搜索',command = create).place(x=350, y=550)
mainloop()

*************************
*************************
各位大佬们请问有什么解决方法吗?各种手段尝试了都不行

参考技术A ```python

print(var.get())
s=var.get()
```
这段代码不应该在显示输入框后马上执行,
应该在create里执行。
因为马上执行时输入框里还没东西。
参考技术B 因为你还未在entry里面写任何东西!
解决方法:(按下enter后print)
def get_input(event):
--print(var.get())
--s=str(var.get())
--filename="fold.../"+s+"疫情地图.html"
e.bind("<Return>",get_input)

创建新建时关闭现有的顶层。 Tkinter Python 3

我在一个打开顶层窗口的程序中有一个按钮。如果再次按下该按钮,我希望销毁旧的顶层并创建一个新的顶层。我搜索了几个小时,尝试了不同的方法,但似乎没有任何工作。

我已经尝试过各种形式的这些方法:

if toplevel is None or not toplevel.winfo_exists():
    toplevel.destroy()


try:
    toplevel.destroy()
except:
    pass


if toplevel.winfo_exists() == "1":
    toplevel.destroy()

我的代码看起来像这样:

def translate():
        #(I would like to check for and close existing toplevels here)
        toplevel = Toplevel()
        ...stuff

我非常感谢能得到的所有帮助!

答案

translate内部,toplevel是一个局部变量。如果您希望在translate之外访问它并且您没有使用类,则需要将其设置为全局。

以上是关于python tkinter 用Toplevel建立子窗口,Entry.get返回为空?的主要内容,如果未能解决你的问题,请参考以下文章

Python GUI编程(Tkinter),python Tk()Frame()TopLevel()用法

Python GUI编程(Tkinter),python Tk()Frame()TopLevel()用法

如何在tkinter python的TopLevel窗口上放置一个按钮?

创建第二个 Toplevel 小部件时,线程 Tkinter 脚本崩溃

Python Tkinter 基础控件学习

创建新建时关闭现有的顶层。 Tkinter Python 3